标签布局在Android中强制关闭

时间:2019-12-20 03:45:32

标签: android android-studio android-fragments android-viewpager android-tablayout

所以我在项目的一个片段中制作了一个tablayout和ViePager,我正在学习教程,并且很成功,但是当我尝试自己运行时,它崩溃了

主页片段以及setupViewPager(viewPager)viewPager.setAdapter(adapter)上的后续错误

   public class HomeFragment extends Fragment {

private TabLayout tabLayout;
private ViewPager viewPager;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_home, container, false);

    tabLayout = view.findViewById(R.id.tabs);
    viewPager = view.findViewById(R.id.view_pager);
    return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    setupViewPager(viewPager);
    tabLayout.setupWithViewPager(viewPager);
    tabLayout.addOnTabSelectedListener(new TabLayout.BaseOnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });
}

private void setupViewPager(ViewPager viewPager){
    ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());
    adapter.addFragment(new HeadlineFragment(), "BERITA UTAMA");
    adapter.addFragment(new BusinessFragment(), "BISNIS");
    adapter.addFragment(new EntertainmentFragment(), "ENTERTAINMENT");
    adapter.addFragment(new HealthFragment(), "KESEHATAN");
    adapter.addFragment(new ScienceFragment(), "SAINS");
    adapter.addFragment(new SportsFragment(), "OLAHRAGA");
    adapter.addFragment(new TechnologyFragment(), "TEKNOLOGI");
    viewPager.setAdapter(adapter);
}
}

查看寻呼机适配器

  public class ViewPagerAdapter extends FragmentPagerAdapter {

private final List<Fragment> fragments = new ArrayList<>();
private final List<String> fragmentsTitle = new ArrayList<>();

public ViewPagerAdapter(FragmentManager manager) {
    super(manager);
}

@NonNull
@Override
public Fragment getItem(int position) {
    return fragments.get(position);
}

@Override
public int getCount() {
    return fragments.size();
}
public void addFragment(Fragment fragment, String title){
    fragments.add(fragment);
    fragmentsTitle.add(title);
}

@Nullable
@Override
public CharSequence getPageTitle(int position) {
    return fragmentsTitle.get(position);
}
}

布局首页

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.android.material.tabs.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            app:tabMode="scrollable"
            app:tabGravity="fill"
            android:layout_height="wrap_content"/>
    </com.google.android.material.appbar.AppBarLayout>


</LinearLayout>
<androidx.viewpager.widget.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
 </RelativeLayout>

stacktrace

2019-12-20 10:36:23.854 15341-15341/com.admaja.maos_aplikasiberita E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.admaja.maos_aplikasiberita, PID: 15341
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.admaja.maos_aplikasiberita/com.admaja.maos_aplikasiberita.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.viewpager.widget.ViewPager.setAdapter(androidx.viewpager.widget.PagerAdapter)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2895)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:176)
    at android.app.ActivityThread.main(ActivityThread.java:6651)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.viewpager.widget.ViewPager.setAdapter(androidx.viewpager.widget.PagerAdapter)' on a null object reference
    at com.admaja.maos_aplikasiberita.fragment.HomeFragment.setupViewPager(HomeFragment.java:84)
    at com.admaja.maos_aplikasiberita.fragment.HomeFragment.onActivityCreated(HomeFragment.java:55)
    at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2619)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:904)
    at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
    at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)
    at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
    at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
    at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
    at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
    at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2663)
    at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManagerImpl.java:2613)
    at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:246)
    at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:542)
    at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1335)
    at android.app.Activity.performStart(Activity.java:7108)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2780)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2895) 
    at android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:176) 
    at android.app.ActivityThread.main(ActivityThread.java:6651) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824) 

希望我能在这里找到解决方案,并感谢您的帮助

0 个答案:

没有答案