首页 > 解决方案 > @AndroidEntryPoint 基类必须扩展 ComponentActivity,(支持)Fragment、View、Service 或 BroadcastReceiver

问题描述

我正在尝试使用 viewmodel 并观察 DialogFragment 中的数据,我也在注入 ViewModel,同时实现代码出错。PFB 我的代码片段。并帮助我找到合适的解决方案。

  1. 当前对话框片段
@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 ();
    }
}
  1. 代码中的父片段
@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 中注入 ViewModel。

标签: javaandroidmvvmdependency-injectiondagger-hilt

解决方案


I resolved this issue by replacing the DialogFragment import and its working fine;

Old Import: import android.app.DialogFragment;

New Import: import androidx.fragment.app.DialogFragment;


推荐阅读