我在片段“ 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;
}
}
当我运行应用程序时,如果我单击列表项,则应用程序崩溃。 出了什么问题,可以解决这个问题吗?
答案 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指出的那样,检查文档以便更好地理解。