Android 只有在onCreate中设置了适配器和RecyclerView时,才会填充片段内部的RecyclerView
我有一个自定义的DialogFragment,它有自己的RecyclerView,出于某种原因,除非在Android 只有在onCreate中设置了适配器和RecyclerView时,才会填充片段内部的RecyclerView,android,android-fragments,android-recyclerview,android-adapter,android-dialogfragment,Android,Android Fragments,Android Recyclerview,Android Adapter,Android Dialogfragment,我有一个自定义的DialogFragment,它有自己的RecyclerView,出于某种原因,除非在onCreate中执行适配器/RecyclerView逻辑,否则不会填充数据。如果在onCreateView或onViewCreated中调用它,则不会发生任何事情,我希望所有这些逻辑都发生在这里。以下是在onCreate中工作的版本: @Override public void onCreate(@Nullable Bundle savedInstanceState) { root =
onCreate
中执行适配器/RecyclerView逻辑,否则不会填充数据。如果在onCreateView
或onViewCreated
中调用它,则不会发生任何事情,我希望所有这些逻辑都发生在这里。以下是在onCreate中工作的版本:
@Override public void onCreate(@Nullable Bundle savedInstanceState) {
root = (ViewGroup) getLayoutInflater().inflate(R.layout.dialog_content, null);
ButterKnife.bind(this, root);
MyAdapter adapter = new MenuOptionsAdapter(getContext(), this);
adapter.setData(getData());
rv.setAdapter(adapter);
rv.setLayoutManager(new LinearLayoutManager(getContext()));
}
下面是我在onCreateView中的尝试:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
root = (ViewGroup) inflater.inflate(R.layout.dialog_content, container, false);
ButterKnife.bind(this, root);
// 'this' in the initialization of MyAdapter represents a custom interface, don't worry about it
MyAdapter adapter = new MenuOptionsAdapter(getContext(), this);
adapter.setData(getData());
rv.setAdapter(adapter);
rv.setLayoutManager(new LinearLayoutManager(getContext()));
}
我在onCreateView中也尝试过这样初始化root:root=(ViewGroup)getLayoutInflater().inflate(R.layout.dialog_content,null)代码>
但是没有骰子
有人知道这可能是什么原因吗?我还尝试在onViewCreated中添加相同的代码,但同样没有成功
PS-我还尝试在设置数据后添加适配器.notifyDataSetChanged()
,并在rv.setData
后尝试添加。如果您想从布局添加视图,应将“true”传递到方法充气器.inflate(R.layout.dialog\u content,container,true)中的最后一个参数 执行以下操作:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
root = (ViewGroup) LayoutInflater.from(getActivity()).inflate(R.layout.dialog_content, null, false);
ButterKnife.bind(this, root);
// 'this' in the initialization of MyAdapter represents a custom interface, don't worry about it
MyAdapter adapter = new MenuOptionsAdapter(getContext(), this);
adapter.setData(getData());
rv.setAdapter(adapter);
rv.setLayoutManager(new LinearLayoutManager(getContext()));
return new AlertDialog.Builder(getActivity())
.setView(root)
.show();
}
如何显示对话框?DialogFragment f=MyDialogFragment.newInstance();f、 显示(getSupportFragmentManager(),对话框标记)代码>然后需要使用onCreateDialog并提供自己的对话框,将视图设置为其viewNope。在android.support.v4.app.Fragment.PerformGetLayoutFlater(Fragment.java:1221)上调用getLayoutFlater().inflate…
会导致某种类型的循环依赖项错误,应用程序会在android.support.v4.app.Fragment.getLayoutFlater上崩溃(Fragment.java:1207)在com.myapp.MyDialogFragment.onCreateDialog(MyDialogFragment.java:120)
这在Logcat中被打印了数百次,直到应用程序崩溃时出现了一个小错误,现在修复也意识到我忘了在这里添加Butterknife.bind