My MainActivity可以调用两个不同的活动(a&b)。活动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活动有两个按钮,一个用于保存,另一个用于取消。SAVE返回一个结果。。。
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;
}
}
这非常有效!!
我想要类似的活动B的返回。我修改了它的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活动中,我没有SAVE按钮来"捕获"。浏览后,我看到onBackPressed()
可用,因为这就是我通常离开此活动的方式。我读到了,我应该可以把结果代码放在网上的其他地方。。
public void onBackPressed() {
super.onBackPressed();
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
}
在MainActivity的onActivityResult
中放入一些Log.i
调用。。。
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活动,效果良好。。。命中所有三个Log.i
语句。B活动达到前两个,但从未达到第三个。
我在这里错过了什么?
感谢Pete
您需要在onbackpress
中添加完成
super.onBackPressed();
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
在我的情况下,这就是工作:
-
MyActivity覆盖onOptionsItemSelected无效,不要使用finish();在家庭情况下,代码如下:
@Override公共布尔值onOptionsItemSelected(MenuItem项){开关(item.getItemId()){案例android。R.id.home:onBackPressed();返回true
默认值:break;}return super.onOptionsItemSelected(item);}
然后,你可以在BackPressed:上覆盖太多
@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();
}
现在,意向数据将在YourFragment的onActivityResult中返回。希望对你有帮助!