1

我有 4 个活动

A B C D

A是主要活动,

B,C,D 是列表视图

我想做这样的事情:

从 A -> B -> C -> D

从A通过单击按钮开始活动B,从B通过选择ListView中的项目开始活动C,下一个通过在活动C中选择另一个项目开始活动D。最后,当在D中选择项目时,返回活动A并完成活动B和C。

当不从 A <- B A <- B <- C 和 A <- B <- C <- D 中选择任何项目时,用户也应该有选择返回

你能给我一些建议这样做有什么用:>?

问候,swierzy

4

4 回答 4

3

如果您完成了一项活动,请致电finish()。检测子活动是否已返回 implement onActivityResult

于 2012-02-13T18:50:09.100 回答
2

对于 A、B 和 C,您需要调用startActivityForResult(). 这允许您在启动Activity完成时收到通知。

来自 A:

Intent i = new Intent(this, B.class);
startActivityForResult(i, B_ACTIVITY);

...

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
    if((resultCode == RESULT_OK) && (requestCode == B_ACTIVITY)) {
        // handle success
    }
}

来自 B(同样来自 C)

Intent i = new Intent(this, C.class);
startActivityForResult(i, C_ACTIVITY);

...

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
    if((resultCode == RESULT_OK) && (requestCode == C_ACTIVITY)) {
        setResult(RESULT_OK);
        finish();
    }
}

当你在 D 中完成后,打电话给你setResult(RESULT_OK);finish()一切都会如你所愿。后退按钮将自动正确处理。

于 2012-02-13T19:02:39.813 回答
0

您可以使用意图并捕获后退按钮:

例如,从 B 到 A

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch(keyCode){
        case KeyEvent.KEYCODE_BACK:
            onBackPressed();
        }
        return super.onKeyDown(keyCode, event);
    }


    @Override
    public void onBackPressed() {
            Intent myIntent = new Intent(B.this,A.class);
            B.this.startActivity(myIntent);
    }
于 2012-02-13T18:52:26.713 回答
0

如果您想从 D 转到 A,请使用意图调用 A 并在意图 (intent.setFlag()) 上设置标志http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP 。

Intent intent = new Intent(D.this, A.class);
intent.setFlag(FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

要从 B 回到 A,从 C 回到 B...,请仅使用 onBackPressed。onBackPressed 方法完成当前活动,您将自动返回活动 A。不要覆盖 onBackPressed 方法!

private void onClickBackButton() {
    onBackPressed();
}

查看开发者 android 网站上的 FLAG 信息:http: //developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_BROUGHT_TO_FRONT

于 2012-02-13T19:04:14.177 回答