Android活动导航:返回上一个活动和返回“退出”

3
我正在尝试为我的应用程序实现有效的导航;基本上它是一个产品目录,我是指:
列出产品 -> 详细信息 列出产品(接口中的搜索按钮 - startActivityForResult)-> 搜索活动(调用完成)-> 返回到列出产品(已过滤)
但是我需要通过硬件搜索按钮打开搜索活动,还需要从详细信息界面打开搜索活动!
是否有可能从详细信息页面使用startActivityForResult打开搜索活动,并在搜索活动完成后转到列出产品页面? 另外,如果我打开搜索活动,然后按返回键,我需要返回到详细信息页面!
如果我总是使用:
startActivity()

那么用户需要反复按BACK按钮,查看所有步骤...

例如,如果使用方式如下:

列表(startActivity)->详情(startActivity)->搜索(startActivity)->列表(startActivity)->详情

返回按钮工作正常,但我必须按五次BACK才能退出!!

我尝试过:

列表(startActivity)->详情(startActivity和finish())- >搜索(调用finish()) -> 列表

但是这种方式会导致搜索中的返回按钮“损坏”,因为我回到了列表而不是详情...

也许我可以尝试这个:

详情(startActivityForResult)- >搜索

在详细信息中,如果我得到result_ok,我就会finish()并回到列表,如果我得到result_cancel,则留在详细信息中?


我想我明白了!在列表活动中,我有“经典”的startActivityForResult,然后是“经典”的onActivityResult

在详细信息活动中,我使用startActivityForResult启动搜索,然后:

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

完成细节后,我回到列表...我不知道这是否可行,但我喜欢它!

2个回答

1
从产品详细活动开始,您可以通过startActivityForResult启动搜索活动。在这种情况下,当搜索活动返回正确的代码时,您可以在产品详细活动的onActivityResult中调用finish()。
这样,产品详细信息将在搜索后完成,您将回到列表活动。
如果您也使用startActivityForResult启动产品详细信息,则可以返回来自搜索活动给定的产品活动数据。
我猜这就是你想要的?

1

很难理解你的问题,因此我只能猜测你的需求。

在你的searchAct活动中,你可以像这样返回数据:

Intent returnIntent = new Intent();
String strData = "your data";
returnIntent.putExtra("data", strData);
setResult(RESULT_OK, returnIntent);        
finish(); 

然后在您的详细活动中,从您开始搜索活动的地方,您有一个函数,在搜索活动完成时触发。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接