我知道这是一个基本问题,我在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语句
答案 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);