在上一个活动的MainActivity中未调用onActivityResult

时间:2018-09-17 05:26:15

标签: android android-activity onactivityresult

我知道这是一个基本问题,我在stackoverflow中看到了关于它的多个答案,但我似乎仍然停滞不前。 onActivityResult只是不被调用。

这是我的代码:

1>在MainActivity中,我具有onActivityResult

public class MainActivity extends AppCompatActivity
        implements MasterListFragment.OnImageClickListener {

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.v(LOG_TAG, "Entering onActivityResult");

    }
}

2>在第二个活动中,我有这个

@Override
    public void onBackPressed() {

        Intent data = new Intent();
        data.putExtra("myData1", "Data 1 value");
        data.putExtra("myData2", "Data 2 value");
        setResult(Activity.RESULT_OK, data);
        finish();
    }

我做一个日志,但LOGCAT中没有显示Log语句

3 个答案:

答案 0 :(得分:2)

要在OnActivityResult中返回结果,您应该使用startActivityForResult(Intent,REQ_CODE)方法开始第二个活动。

答案 1 :(得分:2)

在您的MainActivity上打开这样的意图:

Intent intent = new Intent(this,"Your c class name.class");
 startActivityForResult(intent, 1);

在您的第二个活动中执行以下操作:

Intent returnIntent = new Intent();
  returnIntent.putExtra("result",result);//your changed value here
  setResult(Activity.RESULT_OK,returnIntent);
  finish();

在MainActivity中再次执行此操作

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

if (requestCode == 1) {
    if(resultCode == Activity.RESULT_OK){
        String result=data.getStringExtra("result");

        //you will get the changed data here
      }
      if (resultCode == Activity.RESULT_CANCELED) {
          //Write your code if there's no result
     }
  }
  }//onActivityResult

答案 2 :(得分:0)

使用MainActivity.this.startActivityForResult(intent, REQUEST_CODE);