在子“活动”完成时刷新父“活动”



我有一个启动子活动的父活动。

在儿童活动中,我做:

toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Ride");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

当我单击主页/向上按钮时,我finish活动。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        finish();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

此外,我在子活动中的另一个位置执行finish,在我有finish的两个位置,它都返回到父活动

我的问题:

我的问题是,我只想在finishes一个的情况下刷新父活动

当我不是通过"向上"按钮完成-"父活动"中的数据发生更改,因此-当我按下"备份"按钮时,不需要刷新"父";但当我执行其他finish时,我想刷新"父"。

我该如何检测?

作为启动子活动

startActivityForResult(intent, requestCode)

在向上按钮的情况下,设置结果为儿童活动成功,在反向按压的情况下设置结果为失败。

并且在父活动的onActivityResult(..)中获得状态并在期望的情况下杀死父活动。

在父活动中

startActivityForResult(Intent intent, int REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
case RESULT_OK:
    //refresh parentAcitivty  
    //get the result from the Up button back
    //e.g adapter.notifydatasetchanged()
case RESULT_CANCEL:
    //Do nothing 
    //return from childActivity by other finishes

儿童活动

case 1: //**from the Up button**
   setResult(RESULT_CANCEL);
   finish();
case 2: //**do the other finish**
   setResult(RESULT_OK);
   finish();

我希望代码能给你一个提示。

在这种情况下,使用onResume

@Override
protected void onResume() {
    super.onResume();
    // your code (for example: initialize(); etc.. )
}

如果你参考这篇文章,你就会明白为什么。

活动生命周期Android

如上所述,您在两个地方有finish()方法。一个是ActionBar上的后退按钮(称为AbBack),另一个位于其他位置(RandomBack

A为主"活动",设B为子"活动"。

在A而不是startActivity()方法中,使用

startActivityForResult(Intent intent, int REQUEST_CODE);

这样做是为了让活动B在完成时可以将数据返回到此活动,并且根据数据可以刷新/不刷新

因此,在活动B中,

AbBack的情况下,调用此方法setResult(RESULT_OK);对于RandomBack,调用setResult(RESULT_CANCELD)

最后,在活动A中,您必须覆盖方法

onActivityResult(int requestCode, int resultCode, In帐篷数据)

其中可以比较resultCode==RESULT_OK,如果是,则表示数据来自AbBack,如果不是,则表示来自RandomBack

尝试使用navigateUpFromTask()

使用NavUtils.navigationUpFromSameTask(this);onBackPressed函数如下:

@Override
public void onBackPressed() {
    super.onBackPressed();
    NavUtils.navigateUpFromSameTask(this);
}

相关内容

  • 没有找到相关文章

最新更新