1

我有一个注册活动的应用程序。当我成功注册时,会出现一个新的活动。但是当我点击返回时,注册活动再次出现。

我有以下标签:

next_intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);

我所拥有的是

A-->B-->D (when closing D, A shows up)

我想要的是将新活动打开到顶部,关闭所有以前的活动

A-->B-->D //  D--> Close APP

所以最终的行为必须是:

A --> B (from B can navigate from A)
B --> C (When C is created the other ones has to dissapear).
C       (When created from B).
4

3 回答 3

0

FLAG_ACTIVITY_CLEAR_TOP 对我有用。这应该有效:

Intent i = new Intent(ActivityB.this, ActivityC.class);
                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);
                    finish();

或者您可以尝试使用 onBackPressed。你可以这样做:

     boolean boolExit =false;
//back button
        @Override
            public boolean onKeyDown(int keyCode, KeyEvent event)
            {
                if ((keyCode == KeyEvent.KEYCODE_BACK))
                {
                    if (!boolExit)
                    {

                        boolExit= true;
                        return true;
                    }
                    else
                    {
                        // exit application


                        Intent i = new Intent(ActivityB.this, ActivityD.class);

                        startActivity(i);

                        finish();
                        return true;
                    }
                }
                else
                {
                    return super.onKeyDown(keyCode, event);
                }
            }

你可以完成你想要的每一个活动。

于 2013-11-11T00:42:14.217 回答
0

通过将标志添加到用于启动android:noHistory="true"您不想保留在历史记录中的活动来设置或启动活动。AndroidManifest.xmlFLAG_ACTIVITY_NO_HISTORYIntent

http://developer.android.com/guide/topics/manifest/activity-element.html#nohist

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NO_HISTORY

于 2013-11-11T00:06:02.450 回答
0

由于活动 A 的关闭取决于活动 B 的成功,因此您可以使用startActivityForResult然后直接从 A 导航到活动 C。

活动一:

public static final int REGISTER_REQUEST_CODE = 1;

public void onRegisterButtonClick(View v) {
    startActivityForResult(
            new Intent(this, ActivityB.class), REGISTER_REQUEST_CODE);
}

protected void onActivityResult(int requestCode, int resultCode,
        Intent data) {
    if (requestCode == REGISTER_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            // Assuming you've logged your user in in ActivityB... (otherwise you could grab login credentials from the intent)
            startActivity(new Intent(this, ActivityC.class));
            finish();
        }
    }
}

在活动 B 中:

// User finishes registration process...
setResult(RESULT_OK);
finish();
于 2013-11-11T00:22:58.613 回答