列表视图中的数据无法传递给片段

时间:2017-06-12 08:39:55

标签: android listview

当我点击listview项目时,我正在尝试执行此操作,该行的数据将传递给另一个片段并显示它。但现在问题是片段已经可以显示但是数据无法传递。我正在使用bundle来设置参数。

我已经找到帖子但没有任何帖子帮我解决这个问题..

这是我的列表视图java

otherAdapter adapter = new otherAdapter(getActivity(), R.layout.grid_single, result);
            grid_list.setAdapter(adapter);
            grid_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {  // list item click opens a new detailed activity
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    otherModel othermodel = result.get(position);
                    Bundle bundle = new Bundle();
                    bundle.putString("otherModel",new Gson().toJson(othermodel));
                    OtherDetail other = new OtherDetail();
                    other.setArguments(bundle);
                    getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.container,new OtherDetail()).addToBackStack(null).commit();
                }

在我的片段java中我正在使用getArgument尝试调用数据。

Bundle bundle = this.getArguments();
    if(bundle != null) {
        String json = bundle.getString("otherModel"); // getting the model from MainActivity send via extras
        otherModel otherModel = new Gson().fromJson(json, otherModel.class);
}

2 个答案:

答案 0 :(得分:0)

您必须在事务中传递“other”,您不必创建新片段。 在事务中创建片段时,无需参数即可发送它。

答案 1 :(得分:0)

  

实际上问题是,你在不同的对象中设置Argument并且为事务传递是不同的,所以在简单的单词中为两者传递相同的对象,如果你在other中设置一个Argument然后为Transaction传递相同的对象。

将此行替换为以下代码。

getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.container,other).addToBackStack(null).commit();