use*_*577 8 android android-intent android-activity
我有2个活动,每个活动都在单独的应用程序中.Activity1有一个用户可以单击的按钮,它在onClick()方法中使用intent调用第二个活动:
Intent myIntent = getPackageManager().getLaunchIntentForPackage(com.myProject.Activity2);
startActivityForResult(myIntent, 600);
Run Code Online (Sandbox Code Playgroud)
这正确地从Activity1启动Activity2,但onActivityResult在Activity2中调用之前onCreate在Activity1中调用,而不是在onBackPressed()我设置返回意图的地方调用.
这是onCreateActivity2 的方法:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
Run Code Online (Sandbox Code Playgroud)
以下是onBackPressedActivity2 的当前版本方法:
@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();
}
Run Code Online (Sandbox Code Playgroud)
我的AndroidManifest.xml为Activity2提供了以下intent过滤器:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
我在这里建议验证我launchMode是standard(而不是singleTask等),我的请求代码不是负面的,如此处所述.我也尝试过,但那也是不行的.android:launchMode="singleTop"
我也试过不调用finish()在onBackPressed()提到的活性2 这里(也只是super.onBackPressed()作为建议在这里),并再次调用它的建议在这里.
另外,我试着评论这条线,intent.putExtra("Stuff", someStuff);因为它似乎给这个人带来了麻烦.
关于我可能做错什么的任何想法?
所以这是解决它的最终解决方案:
我将Activity1的意图更改为以下内容:
Intent myIntent = new Intent();
myIntent.setClassName("com.myProject", "com.myProject.Activity2");
startActivityForResult(myIntent, 600);
Run Code Online (Sandbox Code Playgroud)
出于某种原因,除了第一个参数给出的包名称之外,Android还需要第二个参数的完全限定名称.现在它有效!:)
| 归档时间: |
|
| 查看次数: |
4913 次 |
| 最近记录: |