我的项目中有两项活动。 A和B,当用户点击活动A中的按钮时,我打开活动B
A --->乙
当用户单击后退按钮时,应用程序返回活动A
A
在这个活动中,我有一个名为“Resume”的按钮,想要返回活动B而不会丢失任何东西。有可能吗?
A ----> B(旧州)
感谢。
在活动A中
Intent go = new Intent(this,ActivityB.class);
go.putExtra("type", 1);
startActivity(go);
活动B中的后退按钮点击事件
if(v.getId() == R.id.back)
super.onBackPressed();
恢复活动A中的按钮(应该恢复活动B),这段代码可能是错误的
Intent go = new Intent(this,ActivityB.class);
startActivity(go);
清单文件,
<activity
android:name="ActivityB"
android:label="@string/app_name"
android:launchMode="singleTop"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="ActivityA"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 0 :(得分:2)
试试这个:
在你的清单中,
<activity
android:label="@string/app_name" android:name="ActivityB"
android:launchMode="singleTop" >
回去时不要在活动B上调用finish()。所以它应该恢复运行活动B的旧实例。
所以现在只有在没有任何实例的情况下,才会创建一个新的“singleTop”活动实例来处理新意图。但是,如果目标任务已经在其堆栈顶部具有活动的现有实例,则该实例将接收新意图(在onNewIntent()调用中);没有创建新实例。
编辑:
此代码适用于我:
在MainActivity
:
//Go button's onClick
public void goToSecond(View v) {
Intent go = new Intent(this, ChildActivity.class);
startActivity(go);
}
//Resume button's onClick
public void resumeSecond(View v) {
Intent go = new Intent(this, ChildActivity.class);
startActivity(go);
}
在ChildActivity
:
//Back button's onClick
public void goback(View v) {
// onBackPressed();
Intent go = new Intent(this, MainActivity.class);
startActivity(go);
}
在清单中:
<activity
android:name="com.example.testingproj.ChildActivity"
android:label="@string/app_name"
android:launchMode="singleTask" >
目前,当我点击按钮Go时,会调用ChildActivity
的{{1}}。如果我点击“恢复”按钮,则不会重新创建。