调用 startActivityForResult 永远不会传递给 onActivityResult

Calling startActivityForResult never pass to onActivityResult

我正在从子 activity 调用 startActivityForResult 到 MainActivity 但从未传递给 onActivityResult

secondActivty 这是调用

private void bringMainActivityToTop() {
    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    Bundle bun= new Bundle();
    bun.putParcelable("value",new ListData("HelloDummy",longi,lati,"data"));
    intent.putExtra("bundle",bun);
    setResult(RESULT_OK, intent);
    startActivityForResult(intent, 111);
}

我想在 MainActivity 上看到这里的调用我不关心代码我只想看到调用。

@Override
protected void onActivityResult(int requestCode, int responseCode, Intent data) {
    super.onActivityResult(requestCode, responseCode, data);
    System.out.println("HelloWorld");
    Log.i(TAG,"HelloWorld");

}

和清单

 <activity
        android:name="com.test.mppqvat.activity.MainActivity"
        android:label="@string/main_act_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

您呼叫的 Activity 必须呼叫 setResult(Activity.RESULT_OK)setResult(Activity.RESULT_OK, data)

MainActivity.java(在 onCreate 中)

button1=(Button)findViewById(R.id.button1);  
    button1.setOnClickListener(new OnClickListener() {  
        @Override  
        public void onClick(View arg0) {  
            Intent intent=new Intent(MainActivity.this,SecondActivity.class);  
            startActivityForResult(intent, 2);// Activity is started with requestCode 2  
        }  
    });  

(onCreate 之外)

   @Override  
   protected void onActivityResult(int requestCode, int resultCode, Intent data)  
   {  
             super.onActivityResult(requestCode, resultCode, data);  
              // check if the request code is same as what is passed  here it is 2  
               if(requestCode==2)  
                     {  
                        String message=data.getStringExtra("MESSAGE");   
                        //use resulted message  
                     }  
 }  

SecondActivity.java(在 onCreate 中)

button1=(Button)findViewById(R.id.button1);  
        button1.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View arg0) {  
                String message=editText1.getText().toString();  
                Intent intent=new Intent();  
                intent.putExtra("MESSAGE",message);  
                setResult(2,intent);  
                finish();//finishing activity  
            }  
        });  

onActivityResult() 属于您的第二个 activity(如果不是,则必须),而不是 MainActivityonActivityResult() 方法不会在 MainActivity 中触发,因为 MainActivity 是为结果启动的。你意识到了吗?
此外,如果开始获取结果,您的 MainActivity 必须使用 setResult() 方法设置结果,并且必须使用 finish() 方法完成,这样结果将从您的 MainActivity 给你的来电者 SeconActivity activity 并且它的 onActivityResult() 将被解雇。