后退按钮和刷新以前的活动

Pau*_*aul 81 android

如果我们有两个活动:

  1. 文件列表和上次修改时间
  2. 文件编辑活动

用户从列表中选择文件并进入文件编辑活动.完成编辑后,用户按下后退按钮返回文件列表.

该列表未重新加载,因此刚刚编辑的文件修改时间显示的值不正确.

按下后退按钮后,使文件列表刷新的正确方法是什么?

此示例假定没有使用数据库,只是使用ArrayAdapter.

Waz*_*_Be 101

一种选择是使用第一个活动的onResume.

@Override
public void onResume()
    {  // After a pause OR at startup
    super.onResume();
    //Refresh your stuff here
     }
Run Code Online (Sandbox Code Playgroud)

或者您可以启动结果活动:

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);
Run Code Online (Sandbox Code Playgroud)

在secondActivity中,如果要发送回数据:

 Intent returnIntent = new Intent();
 returnIntent.putExtra("result",result);
 setResult(RESULT_OK,returnIntent);     
 finish();
Run Code Online (Sandbox Code Playgroud)

如果您不想返回数据:

Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);        
finish();
Run Code Online (Sandbox Code Playgroud)

现在在您的FirstActivity类中编写以下代码onActivityResult()方法

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  if (requestCode == 1) {

     if(resultCode == RESULT_OK){      
         //Update List         
     }
     if (resultCode == RESULT_CANCELED) {    
         //Do nothing?
     }
  }
}//onActivityResult
Run Code Online (Sandbox Code Playgroud)


Sar*_*oto 37

我认为onRestart()对此更有效.

@Override
public void onRestart() { 
    super.onRestart();
    //When BACK BUTTON is pressed, the activity on the stack is restarted
    //Do what you want on the refresh procedure here
}
Run Code Online (Sandbox Code Playgroud)

您可以在onRestart()内重新启动Activity(从事件'后退按钮'再次调用)时编写您想要执行的操作.

例如,如果您想在onCreate()中执行相同的操作,请将代码粘贴到onRestart()中(例如,使用更新的值重新构建UI).

  • 这是微不足道的,但是我要说它:显然最好将onCreate()代码移动到一个单独的方法中,然后从onCreate()和onRestart()调用,而不是复制粘贴它. (7认同)

ham*_*oae 32

在主要:

@Override
public void onRestart()
{
    super.onRestart();
    finish();
    startActivity(getIntent());
}
Run Code Online (Sandbox Code Playgroud)


bli*_*uff 8

我建议覆盖onResume()活动编号1中的方法,并在其中包含刷新阵列适配器的代码,这可以通过使用来完成[yourListViewAdapater].notifyDataSetChanged();

如果您在刷新列表时遇到问题,请阅读此内容:Android列表视图刷新


Rob*_*hah 6

 @Override
protected void onRestart() {
    super.onRestart();
    finish();
    overridePendingTransition(0, 0);
    startActivity(getIntent());
    overridePendingTransition(0, 0);
}
Run Code Online (Sandbox Code Playgroud)

在之前的活动中使用此代码。这将实现平滑过渡,并在您按后退按钮返回时重新加载活动。