我的应用程序中有四个活动:主要活动登录活动重置活动ContentActivity
MainActivity自动启动LoginActivity。
LoginActivity包含两个按钮:
执行ResetActivity /执行ContentActiviy。
如果用户选择ResetActivity,则此活动将自身调用三次(重新启动),只需增加“ step”(int参数)。
活动路径:
MainActivity ===> LoginActivity ===> ResetActivity(步骤1)===> ResetActivity(步骤2)===> ResetActivity(步骤3)。
我的问题是,当ResetActivity进入后台时,我的应用程序从MainActivity启动,我想让Activity保持当前步长值。
我尝试在ResetPasswordActivity中使用
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putInt("currentStep", step);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
avedInstanceState.getInt("currentStep", step);
}
您知道如何处理此问题吗?
Android始终以android.intent.action.MAIN
中的manifest
开始活动除非应用程序正在运行,否则它将从堆栈顶部开始运行活动。
在您的resetActivty
中使用此:
@Override
protected void onPause() {
super.onPause();
SharedPreferences prefs = getSharedPreferences("LAST", MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putString("lastActivity", getClass().getName());
editor.commit();
}
然后在您的MainActivity
中使用此:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Class<?> activityClass;
try {
SharedPreferences prefs = getSharedPreferences("LAST", MODE_PRIVATE);
activityClass = Class.forName(
prefs.getString("lastActivity", ResetActivity.class.getName()));
} catch(ClassNotFoundException ex) {
activityClass = ResetActivity.class;
}
startActivity(new Intent(this, activityClass));
}