我的主要活动中没有调用onActivityResult()

时间:2015-07-29 01:52:24

标签: android android-intent android-activity

在我的主要活动中,我通过工具栏中的按钮单击调用第二个活动,如下所示

  if(id == R.id.addNav) {
        startActivityForResult(new Intent(this, TextFormActivity.class), 0);
        return true;
    }

然后在我的第二个活动中,我首先使用标记

public static final String EXTRA_TEXT_ADD =
            "text_add";

然后,当点击添加按钮时,我设置了结果

mButtonAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Text text = new Text();
            text.setTitle(mEditTextTitle.getText().toString());
            text.setRecipient(mEditTextRecipient.getText().toString());
            text.setSent(false);
            text.setMessage(mEditTextMessage.getText().toString());
            mTextList.add(text);
            Intent i = new Intent();
            i.putExtra(TextFormActivity.EXTRA_TEXT_ADD,true);
            setResult(RESULT_OK, i);

        }
    });

这就是我处理onActivityResult

的方法
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d("TextListActivity", "Result Entered");
        if(data == null){
            return;
        }
        boolean result = data.getBooleanExtra(TextFormActivity.EXTRA_TEXT_ADD,false);
        Toast.makeText(this,"Result Code: "+ result,Toast.LENGTH_SHORT).show();
    }

当我回到主要活动时,我仍然不知道为什么我的吐司没有出现

修改 好吧,我已经找到了问题,那就是我使用的是NavUtils.navigateUpFromSameTask(TextFormActivity.this);返回主活动,它不会调用onActivityResult方法。

1 个答案:

答案 0 :(得分:1)

您需要完成为结果开始的活动。

因此,在设置结果后按钮单击监听器,只需完成活动。

mButtonAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            .....
            ........
            Intent i = new Intent();
            i.putExtra(TextFormActivity.EXTRA_TEXT_ADD,true);
            setResult(RESULT_OK, i);
            finish();// finish the activity
        }
    });

试试这个,应该有用。