【问题标题】:Replace master fragment using 'if (position == x)'使用 'if (position == x)' 替换主片段
【发布时间】:2015-05-20 15:12:47
【问题描述】:

我有一个包含 3 个项目的虚拟内容列表,但我希望每个项目都打开自己的活动,而不是将数据传递给详细信息片段。单击特定列表项时,如何用我自己的列表片段替换主片段?是否可以对我的每件商品使用if (position == x) 声明?下面的代码替换了详细片段,但我想替换主片段。我没有看到任何关于这方面的教程,因为我遇到的所有教程都与替换细节片段相关,而不是主片段。

@Override
public void onItemSelected(String id) {
    if (mTwoPane) {
        Bundle arguments = new Bundle();
        arguments.putString(ItemDetailFragment.ARG_ITEM_ID, id);
        ItemDetailFragment fragment = new ItemDetailFragment();
        fragment.setArguments(arguments);
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.item_list, fragment)
                .commit();

    } else {
        Intent detailIntent = new Intent(this, ContinentsListActivity.class);
        detailIntent.putExtra(ItemDetailFragment.ARG_ITEM_ID, id);
        startActivity(detailIntent);
    }
}

【问题讨论】:

  • 发布包含主片段的布局。
  • 可以查看onItemSelected传入的id。但是,这取决于您从 onListItemClick 调用 onItemSelected 方法时传入的值。
  • 那个 id 指的是细节片段容器。不是吗?
  • @Joseph82 my onListItemClick 自从我创建项目以来就没有被修改过。如下所示,它取决于从虚拟内容项中单击的内容。 @Override public void onListItemClick(ListView listView, View view, int position, long id) { super.onListItemClick(listView, view, position, id); mCallbacks.onItemSelected(DummyContent.ITEMS.get(position).id); }
  • 所以,你可以比较那个id,例如if("1".equals(id)){ // replace fragment}

标签: java android xml android-intent android-fragments


【解决方案1】:

您可能希望每次将项目添加到列表时都使用 View.setTag(),以便稍后您可以使用 View.getTag() 检索此标签并识别所选项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    相关资源
    最近更新 更多