如何在方向变化上停止整个活动娱乐

时间:2014-12-23 07:01:34

标签: java android

我是android新手。我正在做一个关于数字计算的示例项目。我正在使用纵向和横向布局。每当我更改方向时,我的活动都是新创建的,所有先前输入的值都会丢失。因此,我尝试通过android:configChanges="keyboardHidden|screenSize|orientation"停止活动重新设置,并仅将方向设置为android:screenOrientation="portrait"。但这使我的肖像布局适合横向模式。但我不想要这个。我需要在方向更改时加载我单独的纵向和横向布局,使用之前创建的相同值集(即加载不同的布局而不进行活动重新创建)。

我还尝试使用重写方法,如onConfigurationchanged,onSaveInstanceState,onRestoreInstanceState。但是在使用onConfigurationchanged方法时仍会丢失值,并且在使用onSaveInstanceState和onRestoreInstanceState方法时会重新创建活动(此处仍会检索以前的值)。 对此有何解决方案? 提前谢谢。

3 个答案:

答案 0 :(得分:3)

要解决此问题,您需要在保存的实例状态

中保存和检索数据
@Override
 protected void onSaveInstanceState(Bundle outState) {
  // TODO Auto-generated method stub
  super.onSaveInstanceState(outState);

  // Example to save the value of editText01 in SavedInstanceState
  String stateToSave = editText01.getText().toString();
  outState.putString("saved_state", stateToSave);

 @Override
 protected void onRestoreInstanceState(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onRestoreInstanceState(savedInstanceState);

  //To Retrieve data from "saved_state"
  String stateSaved = savedInstanceState.getString("saved_state");
  edittextEditState.setText(stateSaved);
  }

 }

 }

答案 1 :(得分:0)

您应该查看活动的onPause{}onResume{}方法。因为无论何时更改方向,活动都会暂停,然后再次重新创建,以便丢失数据。为了更好地理解你应该看一下活动的生命周期 http://developer.android.com/reference/android/app/Activity.html ......:)

答案 2 :(得分:0)

删除android:screenOrientation =“portrait”并给出此代码,android:configChanges =“keyboardHidden | screenSize”