onActivityResult 未在 MainActivity 中从之前的 Activity 中调用
onActivityResult NOT called in MainActivity from previous Activity
我知道这是一个基本问题,我在 Whosebug 中看到了多个答案,但我似乎仍然卡住了。 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> 在我的第二个 activity 我有这个
@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();
}
我做了一个Log,在LOGCAT
中没有显示Log语句
要在 OnActivityResult 中返回结果,您应该使用 startActivityForResult(Intent,REQ_CODE)
方法开始第二个 activity。
在您的主页上Activity像这样打开一个 Intent:
Intent intent = new Intent(this,"Your c class name.class");
startActivityForResult(intent, 1);
并在您的第二个 Activity 中执行此操作:
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
使用MainActivity.this.startActivityForResult(intent, REQUEST_CODE);
我知道这是一个基本问题,我在 Whosebug 中看到了多个答案,但我似乎仍然卡住了。 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> 在我的第二个 activity 我有这个
@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();
}
我做了一个Log,在LOGCAT
中没有显示Log语句要在 OnActivityResult 中返回结果,您应该使用 startActivityForResult(Intent,REQ_CODE)
方法开始第二个 activity。
在您的主页上Activity像这样打开一个 Intent:
Intent intent = new Intent(this,"Your c class name.class");
startActivityForResult(intent, 1);
并在您的第二个 Activity 中执行此操作:
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
使用MainActivity.this.startActivityForResult(intent, REQUEST_CODE);