Java Android-在活动关闭时设置活动结果
要为结果启动活动,请执行以下操作:Java Android-在活动关闭时设置活动结果,java,android,onactivityresult,onpause,onbackpressed,Java,Android,Onactivityresult,Onpause,Onbackpressed,要为结果启动活动,请执行以下操作: Intent intent = new Intent(MainActivity.this, DetailsActivity.class); startActivityForResult(intent,EVENT_DETAILS_REQUEST); 在my Details活动中,设置可用于主要活动的结果和附加: @Override public void onBackPressed() { Intent resultIntent
Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
startActivityForResult(intent,EVENT_DETAILS_REQUEST);
在my Details活动中,设置可用于主要活动的结果和附加:
@Override
public void onBackPressed()
{
Intent resultIntent = new Intent();
resultIntent.putExtra("isEdited",isEdited);
setResult(RESULT_OK,resultIntent);
finish();
}
最后,在主要活动中:
@Override
protected void onActivityResult(int requestCode, int resultCode, @NonNull Intent data)
{
switch(requestCode)
{
......
case EVENT_DETAILS_REQUEST:
boolean isEdited = data.getBooleanExtra("isEdited", false);
.......
break;
}
}
只要用户使用“后退”硬件(或系统导航栏)按钮关闭DetailsActivity,这就可以了。如果用户点击活动顶部的“后退”箭头以关闭活动,onBackPressed
将不会被调用,并且onActivityResult
数据将为空
我曾尝试使用onPause
,onStop
,onFinish
而不是onBackPressed
来管理它的工作,但我得到的数据
是onActivityResult
总是空的
解决我的问题的正确方法是什么
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
在详细信息活动中重写此方法。。。这段代码将其添加到您的DetailsActivity中
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
Intent resultIntent = new Intent();
resultIntent.putExtra("isEdited",isEdited);
setResult(RESULT_OK,resultIntent);
finish();
}
return super.onOptionsItemSelected(item);
}
当硬件被反压时,会自动调用此命令
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//your code here
return true;
}
return super.onKeyDown(keyCode, event);
}
您可以这样做,以便在所有可能的关闭案例中发送结果:
@Override
public void finish() {
Intent data = new Intent();
Intent resultIntent = new Intent();
resultIntent.putExtra("isEdited", isEdited);
setResult(RESULT_OK, resultIntent);
super.finish();
}
在menifest文件中使用android:launchMode=“singleTop”。它已经存在。请粘贴您的onoptionItemSelected代码。它不存在。我是否应该在选项ItemSelected中单击返回箭头?要检查什么id?请参阅下面Manoj的答案。完美答案,谢谢。我不知道在何处捕捉活动返回箭头按钮事件。