Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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中使用dagger时片段视图寻呼机的数据绑定_Android_Android Fragments_Dagger 2 - Fatal编程技术网

android中使用dagger时片段视图寻呼机的数据绑定

android中使用dagger时片段视图寻呼机的数据绑定,android,android-fragments,dagger-2,Android,Android Fragments,Dagger 2,基本上,我有一个应用程序,我的MainActivity有一个home片段,它有一个选项卡布局和一个带有数据绑定的viewpager。此视图寻呼机将包含两个子片段 我有一个例外: 01-28 18:46:44.692 24073-24073/app.series.com.tvshowsapplication E/AndroidRuntime: FATAL EXCEPTION: main Process: app.series.com.tvshowsapplication, PID: 24073 j

基本上,我有一个应用程序,我的MainActivity有一个home片段,它有一个选项卡布局和一个带有数据绑定的viewpager。此视图寻呼机将包含两个子片段

我有一个例外:

01-28 18:46:44.692 24073-24073/app.series.com.tvshowsapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: app.series.com.tvshowsapplication, PID: 24073
java.lang.RuntimeException: Unable to start activity ComponentInfo{app.series.com.tvshowsapplication/app.series.com.tvshowsapplication.ui.main.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v4.app.FragmentManager app.series.com.tvshowsapplication.ui.home.HomeFragment.getChildFragmentManager()' on a null object reference
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3046)
   at android.app.ActivityThread.-wrap11(Unknown Source:0)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688)
   at android.os.Handler.dispatchMessage(Handler.java:105)
   at android.os.Looper.loop(Looper.java:164)
   at android.app.ActivityThread.main(ActivityThread.java:6809)
   at java.lang.reflect.Method.invoke(Native Method)
   at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v4.app.FragmentManager app.series.com.tvshowsapplication.ui.home.HomeFragment.getChildFragmentManager()' on a null object reference
   at app.series.com.tvshowsapplication.ui.home.HomeFragmentViewModel.bindViewPagerAdapter(HomeFragmentViewModel.java:24)
   at app.series.com.tvshowsapplication.databinding.HomeFragmentBinding.executeBindings(HomeFragmentBinding.java:123)
   at android.databinding.ViewDataBinding.executeBindingsInternal(ViewDataBinding.java:379)
   at android.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:351)
   at app.series.com.tvshowsapplication.ui.base.BaseFragment.onViewCreated(BaseFragment.java:63)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1430)
   at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1750)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1819)
   at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
   at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2590)
   at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2377)
   at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2332)
   at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2239)
   at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3231)
   at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3181)
   at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:192)
   at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:572)
   at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)
   at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1412)
   at android.app.Activity.performStart(Activity.java:7015)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2909)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3046) 
   at android.app.ActivityThread.-wrap11(Unknown Source:0) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688) 
   at android.os.Handler.dispatchMessage(Handler.java:105) 
   at android.os.Looper.loop(Looper.java:164) 
   at android.app.ActivityThread.main(ActivityThread.java:6809) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
01-28 18:46:44.694 24073-24073/app.series.com.tvshowsapplication D/AppTracker: App Event: crash
这是我的HomeFragmentViewModel

@Module
public class HomeFragmentViewModel extends BaseViewModel<HomeNavigator>{

    public HomeFragmentViewModel()
    {
        super();
    }

    @BindingAdapter({"bind:handler"})
    public static void bindViewPagerAdapter(final ViewPager view, final HomeFragment homeFragment) {
        final HomeFragmentPagerAdapter adapter = new HomeFragmentPagerAdapter(view.getContext(), homeFragment.getChildFragmentManager());
        view.setAdapter(adapter);
    }

    @BindingAdapter({"bind:pager"})
    public static void bindViewPagerTabs(final TabLayout view, final ViewPager pagerView) {
        view.setupWithViewPager(pagerView, true);
    }

}
@模块
公共类HomeFragmentViewModel扩展了BaseViewModel{
公共HomeFragmentViewModel()
{
超级();
}
@BindingAdapter({“bind:handler”})
公共静态void bindViewPagerAdapter(最终ViewPager视图,最终HomeFragment HomeFragment){
最终HomeFragmentPagerAdapter适配器=新的HomeFragmentPagerAdapter(view.getContext(),homeFragment.getChildFragmentManager());
view.setAdapter(适配器);
}
@BindingAdapter({“bind:pager”})
公共静态无效bindViewPagerTabs(最终表格布局视图、最终视图pagerView){
view.setupWithViewPager(pagerView,true);
}
}
应用程序尝试创建viewpager的新适配器时发生异常。 bindViewPagerAdapter函数的一个参数是HomeFragment,但绑定发生在onCreateView中,因此技术上还没有HomeFragment,这导致空指针异常。我仍然需要从某个地方经过一位儿童碎片整理经理。是否有任何选项可以在onViewCreated而不是onCreateView中调用绑定,或者我缺少了什么

这是HomeFragment的代码:

public class HomeFragment extends BaseFragment<HomeFragmentBinding, HomeFragmentViewModel> {

        public static final String TAG = "HomeFragment";

        @Inject
        HomeFragmentViewModel mHomeFragmentViewModel;


        public static HomeFragment newInstance() {
            Bundle args = new Bundle();
            HomeFragment fragment = new HomeFragment();
            fragment.setArguments(args);
            return fragment;
        }

        @Override
        public HomeFragmentViewModel getViewModel() {
            return mHomeFragmentViewModel;
        }

        @Override
        public int getBindingVariable() {
            return BR.viewModel;
        }

        @Override
        public int getLayoutId() {
            return R.layout.home_fragment;
        }


        @Override
        public void onDestroyView() {
            super.onDestroyView();
        }
    }
公共类HomeFragment扩展了BaseFragment{
公共静态最终字符串TAG=“HomeFragment”;
@注入
HomeFragmentViewModel mHomeFragmentViewModel;
公共静态HomeFragment newInstance(){
Bundle args=新Bundle();
HomeFragment=新的HomeFragment();
fragment.setArguments(args);
返回片段;
}
@凌驾
公共HomeFragmentViewModel getViewModel(){
返回mHomeFragmentViewModel;
}
@凌驾
public int getBindingVariable(){
返回BR.viewModel;
}
@凌驾
public int getLayoutId(){
返回R.layout.home\u片段;
}
@凌驾
公共无效onDestroyView(){
super.onDestroyView();
}
}