单击ListView项时打开新片段

时间:2014-08-21 08:33:08

标签: android listview android-fragments android-listview

我对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活动完好无损?

由于

2 个答案:

答案 0 :(得分:2)

在关闭按钮上,您将重新创建家庭活动,结果将再次启动所有内容。要废除这一点,您应该完成DetailActivity,这会将您带回Home活动。

答案 1 :(得分:1)

它再次重新加载它,因为您再次创建MainActivity。为了避免这种情况,请在您的DetailActivity的finish();中尝试if (id == android.R.id.home),以便关闭它,保持MainActivity的预览状态。