onRestoreInstanceState未被调用

时间:2011-08-12 11:28:58

标签: android

继续上一个问题

我点击按钮并执行此操作的第一个屏幕活动

Intent intent = new Intent(MainMenu.this, NewClass.class);
intent.putExtra("value1", value1);  
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

将值传递给新活动,并在onCreate() - 方法

中使用

在新活动上我点击后退按钮

时保存状态
@Override
protected void onSaveInstanceState(Bundle outState) {
    // the UI component values are saved here.
    super.onSaveInstanceState(outState);
    Toast.makeText(this, "Activity state saved", Toast.LENGTH_LONG).show();
}

@Override
public void onBackPressed() {
    //super.onBackPressed();
    Intent intent = new Intent(RoundScoring.this, MainMenu.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    startActivity(intent);
    Toast.makeText(this, "Back Button Pressed", Toast.LENGTH_LONG).show();
}

再次在第一个屏幕上,我点击了另一个按钮,其中包含以下内容:

Intent intentContiune = new Intent(MainMenu.this, NewClass.class);
intentContiune.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intentContiune);

已加载Activty,但由于尚未设置值,因此始终失败。我写了一个onRestorInstanceState来重新填充bundle中的值,但它永远不会被触发。有人可以说我做错了吗

感谢您的时间

更新

@Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        Log.d(DEBUG_TAG, "returnstate called");
        super.onRestoreInstanceState(savedInstanceState);
        value = savedInstanceState.getString("value");


    }

5 个答案:

答案 0 :(得分:1)

使用应用程序

yourApplication.java

public yourApplication extends Application {
    String Value;
    public synchronized String getValue(){
        return Value;
    }
    public synchronized void setValue(String Value){
        this.Value = Value;
    }
}

AndroidManifest.xml

<application android:name="yourApplication" ...

现在您可以使用以下方式在任何地方节省价值:

保存

((yourApplication) getApplicationContext()).setValue("something");

LOAD

((yourApplication) getApplicationContext()).getValue();

答案 1 :(得分:0)

在活动开始后活动重新初始化时调用onRestoreInstanceState get .....所以在开始活动时它将不会被调用...

如果您要保存一些数据,那么您可以将sharedPreference用于这样的情况....

答案 2 :(得分:0)

onRestoreInstanceState()非常棘手。我建议你使用SharedPreferences

http://developer.android.com/guide/topics/data/data-storage.html#pref

答案 3 :(得分:0)

检查

  

的AndroidManifest.xml

它应该包含

  

机器人:configChanges = “取向| keyboardHidden”

答案 4 :(得分:0)

只有在Activity中有要恢复的已保存状态时,系统才会调用onRestoreInstanceState。确切地说,由于缺少资源而系统杀死了Activity,它用于保存onSaveInstanceState中保存的状态。

如果您想保存一些信息并随时可用,那么只需使用SharedPreferences。