gpt4 book ai didi

Android onActivityResult 提前调用

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:04:15 25 4
gpt4 key购买 nike

我有 2 个 Activity ,每个 Activity 都在单独的应用程序中。 Activity1 有一个用户可以单击的按钮,它使用 onClick() 方法中的 intent 调用第二个 Activity :

Intent myIntent = getPackageManager().getLaunchIntentForPackage(com.myProject.Activity2);
startActivityForResult(myIntent, 600);

这正确地从 Activity1 启动了 Activity2,但是 onActivityResult 在 Activity2 中调用 onCreate 之前在 Activity1 中被调用,而不是在 onBackPressed() 中调用我在其中设置返回 Intent 。

这是 Activity2 的 onCreate 方法:

@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

这是 Activity2 的 onBackPressed 方法的当前版本:

@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("Stuff", someStuff);

if(getParent()==null){
setResult(Activity.RESULT_OK, intent);
}else{
getParent().setResult(Activity.RESULT_OK, intent);
}
finish();
super.onBackPressed();
}

我的 AndroidManifest.xml 具有以下 Activity2 Intent 过滤器:

<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

我确认我的launchModestandard(而不是singleTask 等),如建议here并且我的请求代码不是负面的警告 here .我也尝试了 android:launchMode="singleTop",但这也是不行的。

我还尝试不在 onBackPressed() 中为 Activity2 调用 finish(),如前所述 here (也只使用 super.onBackPressed() 建议的 here )并再次按照建议的方式调用它 here .

此外,我尝试注释掉 intent.putExtra("Stuff", someStuff); 行,因为它似乎会给 this person 带来麻烦.

关于我可能做错了什么有什么想法吗?

最佳答案

所以这是解决它的最终解决方案:

我将 Activity1 的 Intent 更改为以下内容:

Intent myIntent = new Intent();
myIntent.setClassName("com.myProject", "com.myProject.Activity2");
startActivityForResult(myIntent, 600);

由于某些原因,除了第一个参数给出的包名称之外,Android 还需要第二个参数的完全限定名称。现在可以了! :)

关于Android onActivityResult 提前调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10048813/

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