我对Android很陌生,所以我可能做的事情完全错了,但是我想在点击一个列表项时打开一个片段,然后在用后退按钮解除它时关闭它。
我现在有一些工作但是当单击后退按钮时,它会重绘整个初始视图。因此列表视图会向上滚动到顶部并重新加载数据库中的所有项目。
在列表项上单击我正在执行此操作的主要活动
public void onItemSelected(String id) {
Intent detailIntent = new Intent(this, DetailActivity.class);
detailIntent.putExtra(Fragment.CLICKED_ID, id);
startActivity(detailIntent);
}
然后在我使用它来展示它的活动中。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_open_day);
// Show the Up button in the action bar.
getActionBar().setDisplayHomeAsUpEnabled(true);
if (savedInstanceState == null) {
// Create the detail fragment and add it to the activity
// using a fragment transaction.
OpenDayFragment fragment = new OpenDayFragment();
getFragmentManager().beginTransaction()
.add(R.id.open_day_detail_container, fragment)
.commit();
}
}
这将关闭它。
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
NavUtils.navigateUpTo(this, new Intent(this, MainActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
我说它一切正常,但是当活动运行时,列表视图和MainActivity的所有标签似乎都是完整的。有没有办法只是在顶部显示一个片段并将其解散,使previosu活动完好无损?
由于
答案 0 :(得分:2)
在关闭按钮上,您将重新创建家庭活动,结果将再次启动所有内容。要废除这一点,您应该完成DetailActivity
,这会将您带回Home
活动。
答案 1 :(得分:1)
它再次重新加载它,因为您再次创建MainActivity。为了避免这种情况,请在您的DetailActivity的finish();
中尝试if (id == android.R.id.home)
,以便关闭它,保持MainActivity的预览状态。