android:freezesText="true"
我的清单:
android:configChanges="orientation"
我也试过这个:
@Override public void onConfigurationChanged(Configuration newConfig){ super.onConfigurationChanged(newConfig); setContentView(R.layout.main2);
所以当方向改变为景观时,我可以看到我的layout-land main2.xml,但是我的textview出来,显示为空.流媒体音乐效果很好.当方向更改时,我可以收听,但每次更改设备的方向时,textview中的文本都会消失.
我该怎么办才能解决这个问题呢?
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); .... ....
非常感谢你.
解决方法
你需要做2件事,假设你想要一个独立的纵向和横向的布局.
>假设您有2个用于纵向和横向的XML布局文件,请将main.xml布局文件放在以下文件夹中:
res / layout / main.xml< - 这将是您的纵向布局
res / layout-land / main.xml< - 这将是您的景观布局 这就是您需要做的所有事情,您不需要触摸清单文件来修改android:configChanges =“orientation”或覆盖onConfigurationChanged().实际上,建议您不要触摸到您想要实现的目标.
>现在从文本视图中保存文本=)假设您的文本视图在布局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) { CharSequence savedText = savedInstanceState.getCharSequence(KEY_TEXT_VALUE); mTextView.setText(savedText); } } @Override protected void onSaveInstanceState (Bundle outState) { super.onSaveInstanceState(outState); outState.putCharSequence(KEY_TEXT_VALUE,mTextView.getText()); }
基本上,每当Android破坏并重新创建您的“活动”方向更改时,它会在销毁前调用onSaveInstanceState(),并在重新创建后调用onCreate().无论保存在onSaveInstanceState中的包中,您都可以从onCreate()参数中获取.
所以你想保存在onSaveInstanceState()中的文本视图的值,并读取它并在onCreate()中填充你的文本视图.如果第一次创建活动(不是由于旋转更改),则onCreate()中的savedInstanceState将为null.你也可能不需要android:freezesText =“true”
如果需要,还可以尝试保存其他变量,因为在销毁和重新创建活动时,您将丢失所有存储的变量.