【发布时间】:2016-01-19 21:55:04
【问题描述】:
我有一个带有 ListView (ItemsActivity) 的 Activity,它的内容来自 JSON API。当我在 ListView 中按下一个项目时,它会加载另一个带有详细信息的 Activity (DetailActivity) 。问题是,当我按下返回按钮时,ItemsActivity 会重新加载 ListView。
我不知道在哪里可以找到有关此的更多信息。我来自 iOS,以前的屏幕不会每次都重新加载。
我想在活动之间保留 ListView 数据。我测试了从 onResume() 调用 loadListItems() 方法,但结果相同。
这是我的代码的简短示例。任何帮助和建议将不胜感激。
/* ItemsActivity.java */
public class ItemsActivity extends AppCompatActivity {
private ListView listItemView;
private Movie[] movies;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycler);
listItemView = (ListView) findViewById(R.id.listItemView);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
loadListItems();
}
private void loadListItems(){
// Http call
...
// Iterate JSON and saving to movies array
...
progressBar.setVisibility(INVISIBLE);
ListAdapter adapter = new ListAdapter(ItemsActivity.this, movies);
listItemView.setAdapter(adapter);
}
/* Adapter Class */
@Override
public void onClick(View v) {
Intent i = new Intent(this, DetailActivity.class);
i.putExtra("item_id", 1);
startActivity(i);
}
}
我刚刚测试了一个包含 2 个活动的新项目,即 ActivityOne 和 ActivityTwo。 ActivityOne 有一个按钮,当按下它的加载 ActivityTwo 时,当我按下返回按钮时,在 ActivityOne 中再次调用 onCreate() 方法。
【问题讨论】:
-
您可以尝试在 onCreate() 中输入一个日志,在 onResume() 中输入一个日志,看看它是否确实每次都被调用?
-
你能发布你的第二个活动代码吗?我认为您重新开始 ActivityOne 而不是完成 ActivityTwo。因为从 ActivityTwo 回来时不应调用 onCreate()。
标签: android android-intent android-activity android-listview activity-lifecycle