Android ListViews在一个片段中打开另一个片段onClickListener中的singleItem。

时间:2015-03-13 20:25:59

标签: android listview android-fragments

我在片段“ FollowListFragment.class ”中有一个ListView。如果我点击任何listView项目。它应该带我到另一个片段“ KeywordFragment.class ”,显示被点击项目的详细信息。

下面是 ListViewAdapter.class的onClickListener

itemView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                resultp = data.get(position);
                Intent intent = new Intent(context, KeywordFragment.class);
                intent.putExtra("keyword_id", resultp.get(FollowListFragment.KWID));
                intent.putExtra("keyword", resultp.get(FollowListFragment.KW));
                context.startActivity(intent);
            }

        });

这是目标片段 KeywordFragment.class ,我想要显示所点击项目的详细信息。

public class KeywordFragment extends Fragment {
        String kwid,kw;

        public KeywordFragment(){}

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_keyword, container, false);
            Intent i = getActivity().getIntent();
            kwid = i.getStringExtra("keyword_id");
            kw = i.getStringExtra("keyword");
            TextView kwtitle = (TextView) rootView.findViewById(R.id.kw);
            kwtitle.setText(kw);

            return rootView;
        }
    }

当我运行应用程序时,如果我单击列表项,则应用程序崩溃。 出了什么问题,可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

KeywordFragment 不是活动。进行片段转换并通过arguments传递您的资料:

 temView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            resultp = data.get(position);
            Bundle bundle = new Bundle();
            KeywordFragment keywordFragment = new KeywordFragment();
            bundle.putString("keyword_id", resultp.get(FollowListFragment.KWID));
            bundle.putString("keyword", resultp.get(FollowListFragment.KW));
            keywordFragment.setArguments(bundle);
            FragmentTransaction fragmentTransaction = 
            getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.your_container,keywordFragment,null);
            fragmentTransaction.commit();
        }
    });

稍后使用以下方法检索值:

  @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_keyword, container, false);
        Bundle i = getArguments();
        kwid = i.getString("keyword_id");
        kw = i.getString("keyword");
        TextView kwtitle = (TextView) rootView.findViewById(R.id.kw);
        kwtitle.setText(kw);

        return rootView;
    }

正如@ user370305指出的那样,检查文档以便更好地理解。