我正在开发一个Android应用程序,将listview更改为回收站视图。
问题
使用示例项目,我在适配器视图中处理对recylcer的点击。 但是,从这个适配器,我有很多时间调用一个新的片段。
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()'上 null object
如果我尝试使用getSupportFragmentManager(),或者导入片段而不是版本4,我也会得到同样的错误。
任何帮助都将不胜感激。
谢谢
答案 0 :(得分:7)
变化
it('assignments and declarations', () => {
testCases.forEach(function (testCase) {
const slx = fs.readFileSync(testDirectory + 'slx/' + testCase.slx, 'utf-8');
const document = compiler.parse(slx);
const lmsGenerator = new LMSGenerator(document);
const lms = lmsGenerator.generate();
const expected = fs.readFileSync(testDirectory + 'lms/' + testCase.lms, 'utf-8');
expect(expected).toBe(lms);
});
});
到
((FragmentActivity) context).getFragmentManager().beginTransaction()
.replace(R.id.content_frame, new numNumbersFrag())
.commit();
因为,在
((FragmentActivity) view.getContext()).getFragmentManager().beginTransaction()
.replace(R.id.content_frame, new numNumbersFrag())
.commit();
view.getContext()将返回不为null的上下文。
谢谢,
答案 1 :(得分:1)
这对您也有帮助:
@Override
public void onClick(View v) {
View view = v.getRootView();
Activity activity = (Activity) view.getContext();
activity.getFragmentManager().beginTransaction().replace(R.id.FrameLayout, fragment).commit();
}
答案 2 :(得分:0)
在您的Adapter类上尝试一下。
((FragmentActivity)context).getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frame_container, new YourFragment().addToBackStack("crop_type")
.commit();