ulq*_*rra 0 android screen-orientation
我有一个多次初始化的活动(片段,共享偏好,服务,ui组件(搜索栏,按钮等)...)我不想在屏幕方向改变时重新启动活动
我找到了一个简单(和工作的解决方案),android:configChanges="keyboardHidden|orientation|screenSize"但我的技术经理以这种方式禁止我,因为据他说这是一个不好的做法
为了正确处理屏幕方向变化,还有哪些其他方法?
非常感谢你
我的主要活动
@AfterViews
public void afterViews() {
putSharedPrefs();
initializeFragments();
initializeComponents();
initializeSynchronizeDialog();
initDownloadDialog();
}
Run Code Online (Sandbox Code Playgroud)
您只需添加横向模式的布局即可.
您只需在"res"目录中添加文件夹layout-land,并定义您的活动在横向模式下的外观布局.
注意 -Keep xml文件名与简单布局文件夹中的名称相同,并且您在活动中使用该名称.它会自动检测您的屏幕方向并相应地应用布局.
EDIT1
现在从文本视图中保存文本=)让我们假设您的textview在布局xml文件中命名为MyTextView.您的活动将需要以下内容:private TextView mTextView; private static final String KEY_TEXT_VALUE ="textValue";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextView = (TextView) findViewById(R.id.main);
if (savedInstanceState != null) {
String savedText = savedInstanceState.getString(KEY_TEXT_VALUE);
mTextView.setText(savedText);
}
@Override
protected void onSaveInstanceState (Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(KEY_TEXT_VALUE, mTextView.getText());
}
Run Code Online (Sandbox Code Playgroud)
基本上,每当Android销毁并重新创建您的Activity以进行方向更改时,它会在销毁之前调用onSaveInstanceState()并在重新创建后调用onCreate().无论你在onSaveInstanceState的包中保存什么,你都可以从onCreate()参数返回.
因此,您希望在onSaveInstanceState()中保存文本视图的值,并读取它并在onCreate()中填充textview.如果第一次创建活动(不是由于旋转更改),则onCreate()中的savedInstanceState将为null.你也可能不需要android:freezesText ="true"
如果需要,您还可以尝试保存其他变量,因为在销毁和重新创建活动时,您将丢失存储的所有变量.
| 归档时间: |
|
| 查看次数: |
391 次 |
| 最近记录: |