相关疑难解决方法(0)

未调用Android DialogFragment onViewCreated

我正在使用android兼容库(v4修订版8).在自定义DialogFragment中,没有调用onViewCreated的覆盖方法.例如.

public class MyDialogFragment extends DialogFragment{
    private String mMessage;
    public MyDialogFragment(String message) {
        mMessage = message;
    }

    @Override
    public Dialog onCreateDialog( Bundle savedInstanceState){
        super.onCreateDialog(savedInstanceState);
        Log.d("TAG", "onCreateDialog");
        setRetainInstance(true); 
        //....do something
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        Log.d("TAG", "onViewCreated");
        //...do something
    }
}
Run Code Online (Sandbox Code Playgroud)

onViewCreated未被记录.

android android-dialogfragment android-support-library

29
推荐指数
4
解决办法
2万
查看次数

将viewModel观察者放在dialogFragment中的位置?

对于片段,建议将liveData观察者放在onActivityCreated方法中.这适用于片段,但当我将其应用于dialogFragment时,我收到以下错误:

java.lang.IllegalStateException:当getView()为null时,即在onCreateView()之前或onDestroyView()之后,无法访问Fragment View的LifecycleOwner.

从这个问题我在创建时读取了dialogFragment的生命周期:

onAttach
onCreate
onCreateDialog
onCreateView
onActivityCreated
onStart
onResume
Run Code Online (Sandbox Code Playgroud)

因此,将观察者放在onActivityCreated中应该没有问题,因为它在onCreateView或onCreateDialog之后.我使用后者,因为我使用自己的布局的Alertdialog.

这是我的观察者的代码:

mScheduleViewModel.getTeachers().observe(getViewLifecycleOwner(), new Observer<List<String>>() {
        @Override
        public void onChanged(@Nullable List<String> strings) {
            mStringList = strings;
            aclInputvalue.setThreshold(2);
            aclAdapter.setList(strings);
            aclAdapter.notifyDataSetChanged();
            ....
}
Run Code Online (Sandbox Code Playgroud)

此代码模式在片段中正常工作,但在dialogFragment中不起作用.我必须将lifecycleOwner设置为'this'.

那么为什么我会收到错误?

android android-livedata

15
推荐指数
1
解决办法
4182
查看次数

BottomSheetDialogFragment 的生命周期是多少

我正在尝试将 Algolia 实现到 BottomSheetDialogFragment 中,并遇到一些我认为与生命周期相关的问题。我试图弄清楚生命周期是什么,但找不到答案。

如果有明显的原因要四处走动并获取该信息,我很抱歉,但我尝试查看文档但找不到它。

具体来说,我想知道何时调用 des onCreateDialog,以及该片段是否有其他独特的方法。我的问题是,由于某种原因,我的搜索框似乎与我的点击视图连接得不好(当我使用持久底部工作表时,相同的代码有效,但我必须更改),我想知道是否需要调用搜索器和我的代码中其他地方的助手。

android android-fragments android-dialogfragment algolia bottom-sheet

4
推荐指数
1
解决办法
7077
查看次数

OnCreateView 未在片段中的对话框片段中调用

我有一个片段,单击按钮后就会执行或显示对话框片段。该对话框片段显示由代码生成的表格,但是当我尝试单击该对话框上的按钮时,会显示该表格 在此输入图像描述

当我在 LogCat 中跟踪它时,不会调用对话框片段 onCreateView。有人可以帮助我或向我解释一下吗?我在 Android 编程方面还不是那么好,我知道我还有很多东西要学。

这是调用对话框片段的片段的代码

public class fragment_schedule extends Fragment {

...............


public fragment_schedule(ArrayList<SubjSchedule> subj){
    subject = subj;
}
@SuppressWarnings("deprecation")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

..................

showlstbtn = (Button) rootView.findViewById(R.id.button_showlstschd);
        showlstbtn.setOnClickListener(new OnClickListener(){

            @Override
        public void onClick(View v) {

            // TODO Auto-generated method stub
            FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
            ft.addToBackStack(null);
            DialogFragment dialog = ShowLstDialog.newInstance(subject);
            dialog.show(ft, "dialog");
        }

    });

   ..........
Run Code Online (Sandbox Code Playgroud)

这是我的对话片段

public class ShowLstDialog extends DialogFragment {

private static final String TAG = ShowLstDialog.class.getSimpleName();
public …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-dialogfragment

2
推荐指数
1
解决办法
4124
查看次数