gpt4 book ai didi

Android Start Activity for Result 返回不同的 resultCode

转载 作者:行者123 更新时间:2023-11-29 14:15:11 27 4
gpt4 key购买 nike

关于类似主题的问题有很多,但在四处搜索后,我没有找到与我的问题相匹配的问题。

我知道如何为结果启动 Intent ,并覆盖 onActivityResult() 来处理这些 Intent ,但出于某种原因,当我从 Activity b 返回到 Activity a 时遇到问题。因此,例如,在我开始项目的 3 个 Activity (AddDirections 类)中的最后一个中,我调用此方法返回到上一个 Activity :

public void finish(View v){
Intent intent = new Intent(getApplicationContext(), AddIngredients.class);
intent.putExtra(Home.RECIPE_INTENT, (Parcelable)recipe);
intent.putExtra(Home.RECIPE_ID_INTENT, recipe.getId());
setResult(RESULT_OK, intent);
finish();
}

在 AddIngredients 类中,我有这个方法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK && requestCode == DIRECTIONS_REQUEST){
Intent intent = new Intent(getApplicationContext(), NameRecipe.class);
Recipe recipe = data.getParcelableExtra(Home.RECIPE_INTENT);
intent.putExtra(Home.RECIPE_INTENT, (Parcelable)recipe);
setResult(RESULT_OK, intent);
finish();
}
}

这应该接受从 AddDirections 类返回的结果,并将其传递给 NameRecipe,我在那里有完全相同的方法(除了在新的 Intent 方法中它说 Home.class)。在 Home 类中,我再次使用基本相同的方法来接收 Intent ,因为它一直返回到应用程序之外。

现在,我要说的是,如果我从头到尾直接完成这些步骤,这是行得通的。但是,如果我使用向上导航转到当前 Activity 的父 Activity,那么它会把一切都搞砸。然后,当我在最后一步单击完成时,它会弄乱我为每个 Intent 设置的 resultCode。我确保将正确的结果明确设置为 RESULT_OK(等于 1),但出于某种原因,有时它会将我设置为 resultCode 的内容更改为 0。

如果用户点击向上导航,我会在 Activity 中执行以下操作:

public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = NavUtils.getParentActivityIntent(this);
intent.putExtra(Home.RECIPE_INTENT, (Parcelable)recipe);
setResult(RESULT_OK, intent);
NavUtils.navigateUpTo(this, intent);
finish(); //Have tried with and without this
return true;
}
return super.onOptionsItemSelected(item);
}

就像我说的,我已经搜索了很多为什么 resultCode 在使用向上导航后被覆盖的原因,但我没有找到一个原因。

如有任何帮助,我们将不胜感激。

最佳答案

看起来潜在的问题实际上是如何使用内置的向上导航在堆栈中的多个 Activity 之间导航。我想知道项目是否针对此类导航正确设置。来自 android 开发人员资源,up navigation from google ,您必须使用父 Activity 设置导航按钮。然后应用程序可以在不同的 Activity 之间穿梭。从它的外观来看,这应该允许 A->B B->C c->D 并在需要时返回 A。如果用户选择,我还会添加一个按钮,允许直接返回 A 的路径。

如果您有更多关于您在 Activity 之间尝试完成的事情的信息,无论是来回传递数据还是只是返回到之前的 Activity ,这将很有帮助。希望该链接能帮助您解决这个问题。

关于Android Start Activity for Result 返回不同的 resultCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20086506/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com