我有两项活动:MainActivity
和SettingActivity
。
最初,该应用程序已启动至MainActivity
。我通过以下方式启动菜单:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_settings:
Intent settingActivity = new Intent(MainActivity.this, SettingActivity.class);
startActivity(settingActivity);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
然后,“保存”按钮为SettingActivity
。在onClick
函数中,它将通过以下方式返回MainActivity
Intent mainActivity = new Intent(SettingActivity.this, MainActivity.class);
startActivity(mainActivity);
第一个问题,这个流程是否正确?
接下来,在我转到SettingActivity
并点击“保存”按钮返回MainActivity
期间,当我按“返回”按钮时,它会返回SettingActivity
。我希望Back按钮将返回以关闭应用程序(无需杀死应用程序),而不是返回设置。所以,我的第二个问题,我怎样才能创建我预期的行为?
备注:对于Android而言,在使用UINavigationController
的iOS概念中,它会在UINavigationBar
上的“后退”按钮后返回到上一个回传。
答案 0 :(得分:2)
只需从finish();
而不是
SettingActivity
Intent mainActivity = new Intent(SettingActivity.this, MainActivity.class);
startActivity(mainActivity);
答案 1 :(得分:1)
您只是从设置活动中再次启动主要活动。这就是将activityactivity设置为活动堆栈中的上一个活动的原因。有几种方法可以实现您的目标。但是当我完成工作时,我会选择完成设置活动。所以你会自动转到主要活动。
答案 2 :(得分:1)
不是使用MainActivity
来电重新启动startActivity()
,而是在保存各种更改后,应该在保存方法中finish()
上调用SettingsActivity
默认行为会将您带回到最后一个正在运行的活动,在这种情况下,您的MainActivity
。
更完整的例子;
// MainActivity
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_settings:
Intent settingActivity = new Intent(MainActivity.this, SettingActivity.class);
startActivity(settingActivity);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onResume() {
// This will be called after you finish SettingsActivity.
}
// SettingsActivity
private void save() {
// Save your current options
finish();
}
答案 3 :(得分:1)
然后,有一个Save按钮是SettingActivity。在onClick函数中,它将通过以下方式返回到MainActivity:
Intent mainActivity = new Intent(SettingActivity.this, MainActivity.class);
startActivity(mainActivity);"
请替换此
Intent mainActivity = new Intent(SettingActivity.this, MainActivity.class);
startActivity(mainActivity);
通过
finish();
答案 4 :(得分:1)
转到SettingsActivity时,您的后台堆栈是:
MainActivity
SettingsActivity
因此,当您按下SAVE并为MainActivity创建另一个意图时,您的SettingsActivity会转到后台,这就是为什么当您按BACK时,它会返回到Settings,因为SettingsActivity已恢复。这是一种正常的Android行为。
您要做的是完成SettingsActivity,因此当您在“设置”中按下“保存”按钮时,只需通过调用以下内容返回上一个(MainActivity):
finish();
而不是对MainActivity的意图。
答案 5 :(得分:0)
您可以使用ActivityGroup活动来控制您的活动。无论何时膨胀活动,都将活动推送到堆栈,无论何时按下,都会从堆栈中弹出活动。