我的应用中有一些活动: A - 登录活动 B - 主要应用活动 C , D ... - 内部活动 我想实现如下行为:
例如:活动堆栈 A - &gt; B - &gt; C - &gt; D 第一次按下后退按钮(热门活动 D )将弹出堆栈顶部的 D ,它将是:< strong> A - &gt; B - &gt; C 再次点击(热门活动 C )会将我们移至 A - &gt; B 并再次点击将退出应用(如2中所述)
我通过在android:noHistory="true"
中将AndroidManifest.xml
添加到 A 的属性来实现(2)
并试图通过在android:launchMode=singleTop
中将AndroidManifest.xml
添加到 A 的属性来实现(1)但是当我这样做时(3)被打破并在 D时单击返回可见直接将我移至 A 。
我怎样才能实现它们?
谢谢!
答案 0 :(得分:0)
检测返回键按下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//Do what you want, forinstance:
finish(); //This will close the current Activity and will go back to the previous one
}
return super.onKeyDown(keyCode, event);
}
要关闭 D ,您可以在顶部示例中使用finish();
。这将关闭 D ,并将您带回 C 。
与 C 和 B 相同,您通常不应该关闭应用。
但如果是这样,你可以调用像System.exit(0);
这样的somtehing来关闭App。
要定义哪个Activity是父Activity,请进入Manifest.xml并放置如下内容: 这是为了你的1.事:
<activity
android:name=".ActivityD"
android:parentActivityName="com.example.ActivityA" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.ActivityA" />
</activity>
答案 1 :(得分:0)
您可以覆盖onbackpressed方法和使用的意图
> Intent intent = new Intent(Intent.ACTION_MAIN);
> intent.addCategory(Intent.CATEGORY_HOME);
> intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
> startActivity(intent);
活动b