我正在尝试使用 viewmodel 并观察 DialogFragment 中的数据,我也在注入(inject) ViewModel,同时实现代码出错。 PFB 我的代码 fragment 。并帮助我找到合适的解决方案。
@AndroidEntryPoint
public class MyFragmentFragment extends DialogFragment implements View.OnClickListener {
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_buycourse, container, false);
myViewModel = new ViewModelProvider(this).get(MyViewModel.class);
view = mBinding.getRoot();
initViews();
return view;
}
public static MyFragmentFragment newInstance(){
return new MyFragmentFragment ();
}
}
@AndroidEntryPoint
public class HomeFragment extends Fragment {
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mBinding.startBtn.setOnClickListener(v -> {
DialogFragment dialog = new MyFragmentFragment ();
dialog.setStyle(DialogFragment.STYLE_NO_TITLE, R.style.Theme_Learn365_NoActionBar);
dialog.show(requireActivity().getFragmentManager(), "MyFragment");
}
}
}
当我运行它时,我得到“@AndroidEntryPoint 基类必须扩展 ComponentActivity、(支持)Fragment、View、Service 或 BroadcastReceiver。”而且我无法在 DialogFragment 中注入(inject) ViewModel。
最佳答案
我通过替换 解决了这个问题对话框 fragment 导入 及其工作正常;
旧进口:
进口 android.app.DialogFragment;
新进口:
进口 androidx.fragment.app.DialogFragment;
关于java - @AndroidEntryPoint 基类必须扩展 ComponentActivity,(支持)Fragment、View、Service 或 BroadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68601611/