如果我们有两个活动:
用户从列表中选择文件并进入文件编辑活动.完成编辑后,用户按下后退按钮返回文件列表.
该列表未重新加载,因此刚刚编辑的文件修改时间显示的值不正确.
按下后退按钮后,使文件列表刷新的正确方法是什么?
此示例假定没有使用数据库,只是使用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).
ham*_*oae 32
在主要:
@Override
public void onRestart()
{
super.onRestart();
finish();
startActivity(getIntent());
}
Run Code Online (Sandbox Code Playgroud)
我建议覆盖onResume()活动编号1中的方法,并在其中包含刷新阵列适配器的代码,这可以通过使用来完成[yourListViewAdapater].notifyDataSetChanged();
如果您在刷新列表时遇到问题,请阅读此内容:Android列表视图刷新
@Override
protected void onRestart() {
super.onRestart();
finish();
overridePendingTransition(0, 0);
startActivity(getIntent());
overridePendingTransition(0, 0);
}
Run Code Online (Sandbox Code Playgroud)
在之前的活动中使用此代码。这将实现平滑过渡,并在您按后退按钮返回时重新加载活动。