onBackPressed 可以设置和 return 意图结果吗?
Can onBackPressed set and return an intent result?
My MainActivity 可以调用两个不同的活动 (a & b)。 Activity A调用如下:
private View.OnLongClickListener alc = new View.OnLongClickListener(){
public boolean onLongClick(View v) {
Intent j = new Intent(MainActivity.this,AActivity.class);
startActivityForResult(j, 1);
return true;
}
};
A activity 有两个按钮,一个用于保存,一个用于取消。保存 return 结果...
public void onClick(View v) {
switch(v.getId()){
case R.id.btnSave:
Intent returnIntent = new Intent();
setResult(RESULT_OK,returnIntent);
finish();
break;
case R.id.btnCxl:
finish();
break;
}
}
这非常有效!!
我想要 Activity B 的类似 return。我修改了它的 Intent 调用如下...
private View.OnClickListener ac = new View.OnClickListener() {
public void onClick(View v) {
Intent j = new Intent(MainActivity.this,BActivity.class);
startActivityForResult(j, 1);
}
};
在 B activity 中,我没有 "catch" 的保存按钮。浏览后,我看到 onBackPressed()
可用,因为这就是我通常离开此 activity 的方式。我读到我应该能够将结果代码放在网上的其他地方..
public void onBackPressed() {
super.onBackPressed();
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
}
在我的 onActivityResult
中插入一些 Log.i
调用 Activity...
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i("MYLOG","In Result");
if (requestCode==1) {
Log.i("MYLOG","In Result 1");
if (resultCode == RESULT_OK) {
Log.i("MYLOG","In Result 1 OK");
// Do some data processing and display here!!
}
}
}
如前所述,A activity 工作正常...命中所有三个 Log.i
语句。 B activity 命中前两个,但从未命中第 3 个。
我在这里错过了什么?
谢谢皮特
您需要在 onbackpress
中添加完成
super.onBackPressed();
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
就我而言,这是工作:
MyActivity 覆盖 onOptionsItemSelected 无效,不要使用 finish();在家里,
改为以下代码:
@Override
public 布尔 onOptionsItemSelected(菜单项){
开关(item.getItemId())
{
案例android.R.id.home:
onBackPressed();
return 正确;
default:break;
}
return super.onOptionsItemSelected(项目);
}
然后,你重写 onBackPressed:
@Override
public void onBackPressed() {
//super.onBackPressed();//
Intent intent_return = getIntent();
intent_return.putExtra("idPaid",p.getId());
intent_return.putExtra("position", rootPosition);
intent_return.putExtra("isEdit", isEdit);
setResult(RESULT_OK, intent_return);
finish();
}
现在,意图数据将 return 在 YourFragment 的 onActivityResult 中。
希望对你有帮助!
My MainActivity 可以调用两个不同的活动 (a & b)。 Activity A调用如下:
private View.OnLongClickListener alc = new View.OnLongClickListener(){
public boolean onLongClick(View v) {
Intent j = new Intent(MainActivity.this,AActivity.class);
startActivityForResult(j, 1);
return true;
}
};
A activity 有两个按钮,一个用于保存,一个用于取消。保存 return 结果...
public void onClick(View v) {
switch(v.getId()){
case R.id.btnSave:
Intent returnIntent = new Intent();
setResult(RESULT_OK,returnIntent);
finish();
break;
case R.id.btnCxl:
finish();
break;
}
}
这非常有效!!
我想要 Activity B 的类似 return。我修改了它的 Intent 调用如下...
private View.OnClickListener ac = new View.OnClickListener() {
public void onClick(View v) {
Intent j = new Intent(MainActivity.this,BActivity.class);
startActivityForResult(j, 1);
}
};
在 B activity 中,我没有 "catch" 的保存按钮。浏览后,我看到 onBackPressed()
可用,因为这就是我通常离开此 activity 的方式。我读到我应该能够将结果代码放在网上的其他地方..
public void onBackPressed() {
super.onBackPressed();
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
}
在我的 onActivityResult
中插入一些 Log.i
调用 Activity...
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i("MYLOG","In Result");
if (requestCode==1) {
Log.i("MYLOG","In Result 1");
if (resultCode == RESULT_OK) {
Log.i("MYLOG","In Result 1 OK");
// Do some data processing and display here!!
}
}
}
如前所述,A activity 工作正常...命中所有三个 Log.i
语句。 B activity 命中前两个,但从未命中第 3 个。
我在这里错过了什么?
谢谢皮特
您需要在 onbackpress
super.onBackPressed();
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
就我而言,这是工作:
MyActivity 覆盖 onOptionsItemSelected 无效,不要使用 finish();在家里, 改为以下代码:
@Override public 布尔 onOptionsItemSelected(菜单项){ 开关(item.getItemId()) { 案例android.R.id.home: onBackPressed(); return 正确;
default:break; } return super.onOptionsItemSelected(项目); }
然后,你重写 onBackPressed:
@Override
public void onBackPressed() {
//super.onBackPressed();//
Intent intent_return = getIntent();
intent_return.putExtra("idPaid",p.getId());
intent_return.putExtra("position", rootPosition);
intent_return.putExtra("isEdit", isEdit);
setResult(RESULT_OK, intent_return);
finish();
}
现在,意图数据将 return 在 YourFragment 的 onActivityResult 中。 希望对你有帮助!