Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 只有在onCreate中设置了适配器和RecyclerView时,才会填充片段内部的RecyclerView_Android_Android Fragments_Android Recyclerview_Android Adapter_Android Dialogfragment - Fatal编程技术网

Android 只有在onCreate中设置了适配器和RecyclerView时,才会填充片段内部的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 =

我有一个自定义的DialogFragment,它有自己的RecyclerView,出于某种原因,除非在
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