可以在BackPressed上设置并返回意向结果



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中返回。希望对你有帮助!

相关内容

  • 没有找到相关文章

最新更新