Android 替换回收器适配器中的碎片
我正在开发一款android应用程序,将listview更改为recycler视图 问题 使用一个示例项目,我在adapter视图中处理对recylcer的单击。 然而,从这个适配器,我有一个非常有时间调用一个新片段Android 替换回收器适配器中的碎片,android,android-fragments,Android,Android Fragments,我正在开发一款android应用程序,将listview更改为recycler视图 问题 使用一个示例项目,我在adapter视图中处理对recylcer的单击。 然而,从这个适配器,我有一个非常有时间调用一个新片段 itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// android.app.FragmentManager fragmentManager = getFragmentManager();
// FragmentManager fragmentManager = ((Activity) context).getFragmentManager();
// FragmentManager manager = this.getSupportFragmentManager();
// FragmentManager manager= getContext().getFragmentManager();
// FragmentManager fragmentManager = newsAdapter().getActivity().getFragmentManager();
// getActivity().getFragmentManager();
Log.i("RecyclerViewItemClic", String.valueOf(getLayoutPosition()));
Log.i("RecyclerViewItemClic", personName.getText().toString());
String idnum = String.valueOf(personName.getText());
Log.i("RecyclerViewItemClic", idnum);
Log.i("RecyclerViewItemClic", personAge.getText().toString());
if (personName.getText().toString() .equals("1")) {
/*
fragmentManager.beginTransaction()
.replace(R.id.content_frame
,new numNumbersFrag())
.commit();
*/
((FragmentActivity) context).getFragmentManager().beginTransaction()
.replace(R.id.content_frame, new numNumbersFrag())
.commit();
}
}
上面是我试图导致错误的代码
尝试调用虚拟方法“android.app.FragmentManager”
上的android.support.v4.app.FragmentActivity.getFragmentManager()
空对象
如果尝试使用getSupportFragmentManager(),或者导入片段而不是版本4,也会出现相同的错误
任何帮助都将不胜感激
谢谢你的改变
((FragmentActivity) context).getFragmentManager().beginTransaction()
.replace(R.id.content_frame, new numNumbersFrag())
.commit();
到
因为,在
public void onClick(View view)
view.getContext()将返回不为null的上下文
谢谢,这也可以帮助您:
@Override
public void onClick(View v) {
View view = v.getRootView();
Activity activity = (Activity) view.getContext();
activity.getFragmentManager().beginTransaction().replace(R.id.FrameLayout, fragment).commit();
}
在你的适配器类上试试这个
这个R.id.content框架在哪里?在问题中。
@Override
public void onClick(View v) {
View view = v.getRootView();
Activity activity = (Activity) view.getContext();
activity.getFragmentManager().beginTransaction().replace(R.id.FrameLayout, fragment).commit();
}
((FragmentActivity)context).getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frame_container, new YourFragment().addToBackStack("crop_type")
.commit();