3

我有一个应用程序,其中有 5 个活动。一个菜单活动和另外 4 个子活动附加到菜单屏幕。所以我可以选择任何活动,然后返回菜单。假设我像这样四处走动

菜单 -> 活动 1 -> 菜单 -> 活动 3 -> 活动 2 -> 菜单

现在我按下 Home/Back 按钮,我希望我的应用程序会显示一个退出确认的警报对话框,如果我按下是然后杀死所有 Activity 并显示主屏幕。

我试过那些 finish() , System.exit(0) 但没有运气。finish() 和 System.exit(0) 都完成了当前的活动,而不是全部。请告诉我一个方法。

4

4 回答 4

0

是的你可以。有 2 种不同的方法

  1. 使用 onActivityResult

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // Check which request we're responding to
        if (resultCode == QUIT_ALL) {
            // 
            setResult(QUIT_ALL,returnIntent);     
           finish();
         }
     }    
    //last activity
    setResult(QUIT_ALL,returnIntent);     
    finish();
    
  2. 明确声明活动跳过堆栈:

    < activity android:name=".Activity1" android:noHistory="true" ... />
    < activity android:name=".Activity2" android:noHistory="true" ... />
    
于 2013-05-23T09:15:13.293 回答
0

我认为最好在后台停止儿童活动。例如

Menu > Activity1 > 

现在如果你menu再去然后完成Acitivy 1

再次Menu > Activity 3 > Activity 2 > Menu

当您转到活动 3 然后是活动 2.. 然后使用开始活动从 3 开始活动 2 作为结果。因此,如果您想从活动 2 进入菜单。那么您可以通过活动 3 ..

另一个更好的解决方案是使用CLEAR_TOP,SINGLE_TASKS标志来打开菜单。因此,当您进入菜单时,只有菜单活动处于活动状态。然后通过调用完成,您可以完成您的应用程序。

于 2013-05-23T09:04:37.753 回答
0

这对我有用:

    Intent intent = new Intent(this, TopMenuActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra(Utils.INTENT_EXIT, true);
    startActivity(intent);
    finish(); // finish the current activity

然后在 TopMenuActivity onCreate() 方法中添加以下内容

    if( getIntent().getBooleanExtra(Utils.INTENT_EXIT, false)){
        finish(); // finish TopMenu and go HOME
        return; // prevent from doing unnecessary stuff below
    }

脏,对!但它有效。

于 2013-05-23T09:10:03.213 回答
0

完成活动,单击主页按钮。将此代码放入您的活动中。它对我来说是完美的..

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

if ((keyCode == KeyEvent.KEYCODE_HOME)) {
    Log.v("hari", "KEYCODE_HOME");
    onUserLeaveHint();

    return true;
}
if ((keyCode == KeyEvent.KEYCODE_BACK)) {

    return true;
}
if ((keyCode == KeyEvent.KEYCODE_MENU)) {

    return true;
}
return false;
}


public void onUserLeaveHint() { // this only executes when Home is selected.

super.onUserLeaveHint();
if (!isFinishing()) {
    Log.v("hari", "if condition working");
    finish();
}

}

但有时使用此代码时后退按钮不起作用...

于 2013-07-11T12:37:59.227 回答