我在我的应用程序中使用了两个活动(A和B)的实例。现在我面临着坚持每个人的问题。当我使用sharedpreferences时,我只能使用SharedPreferences持久化A.class和B.class,但是当我再次使用实例A时。它覆盖了SharedPreferences中的持久状态。我想,我应该使用onSavedInstanceState和onRestoredInstanceState的Bundle。但是如何将保存的Bundle传递给onCreate()?目标是能够持久保存活动实例。
由于
答案 0 :(得分:0)
启动活动A.您可以使用intent.putExtra( String name, Bundle value )
将捆绑包传递给您的活动,然后在活动A的onCreate中使用getIntent.getBundleExtra( String name )
再次获取您的捆绑包。
答案 1 :(得分:0)
你需要考虑你需要坚持的状态。
例如;
举个例子, 我刚刚完成了一个应用程序,用户可以在其中查看不同级别的抽认卡。
我关心;
这是代码。
// a variable to store the level
private final static String CARD_LEVEL_STATE = "currentCardLevel";
// a variable to store the current card
private final static String CURRENT_CARD_STATE = "currentCardNumber";
@Override
protected void onSaveInstanceState(Bundle outState) {
// save the level
outState.putInt(CARD_LEVEL_STATE, flashCardList.currentLevel());
// save the current card
outState.putInt(CURRENT_CARD_STATE, flashCardList.currentCardNumber());
// do the default stuff
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// ignore if we have no saved state
if (savedInstanceState != null) {
// record the level
if (savedInstanceState.containsKey(CARD_LEVEL_STATE)) {
int currentCardLevel = savedInstanceState.getInt(CARD_LEVEL_STATE);
flashCardList.setCardLevel(currentCardLevel);
}
// recover the current card
if (savedInstanceState.containsKey(CURRENT_CARD_STATE)) {
int currentCardNumber = savedInstanceState.getInt(CURRENT_CARD_STATE);
flashCardList.setCurrentCardNumber(currentCardNumber);
}
// refresh the view
refreshCard();
}
super.onRestoreInstanceState(savedInstanceState);
};