Java TabLayout内部片段(应用程序已停止)

Java TabLayout内部片段(应用程序已停止),java,android,xml,android-fragments,layout,Java,Android,Xml,Android Fragments,Layout,我正在我的家片段中创建一个表格布局,它是底部导航栏的一部分。 我已经尽了我所知的一切去弄清楚为什么一旦我导航到家,应用程序就停止工作了,但没有任何线索 我已经调试并清理了应用程序,但一切都成功,未检测到任何错误 这是我的代码主页,有人可以帮我:我有两个选项卡1-Landmark 2-Events,每个选项卡也是一个片段 HomeFragemnt.java package com.example.assus.wijhah0; import android.os.Bundle; import and

我正在我的家片段中创建一个表格布局,它是底部导航栏的一部分。 我已经尽了我所知的一切去弄清楚为什么一旦我导航到家,应用程序就停止工作了,但没有任何线索

我已经调试并清理了应用程序,但一切都成功,未检测到任何错误

这是我的代码主页,有人可以帮我:我有两个选项卡1-Landmark 2-Events,每个选项卡也是一个片段

HomeFragemnt.java

package com.example.assus.wijhah0;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

public class HomeFragment extends Fragment {

private TabLayout tabLayout;
private AppBarLayout appBarLayout;
private ViewPager viewPager;


public HomeFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {


    View v = inflater.inflate(R.layout.fragment_home, container, false);

    tabLayout = v.findViewById(R.id.tablayout_id);
    appBarLayout = v.findViewById(R.id.tablayout_id);
    viewPager = v.findViewById(R.id.viewpager_id);
    ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());

    //adding fragments
    adapter.AddFragment( new LandmarkFragment(), "Landmark");
    adapter.AddFragment(new EventsFragment(), "Events");


    //adapter set up
    viewPager.setAdapter(adapter);
    tabLayout.setupWithViewPager(viewPager);

    // Inflate the layout for this fragment
    return v;
}}
   import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.ArrayList;
import java.util.List;

public class ViewPagerAdapter extends FragmentPagerAdapter{

private final List<Fragment> fragmentList = new ArrayList<>();
private final List<String> FragmentListTitles = new ArrayList<>();

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

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

@Override
public int getCount() {
    return FragmentListTitles.size();
}

public CharSequence getPageTitle(int position) {
    return FragmentListTitles.get(position);
} //end CharSequence



   public void AddFragment( Fragment fragment, String Title) {
        fragmentList.add(fragment);
        FragmentListTitles.add(Title);
    } // end Addfragment


} //end class
fragment_home.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    tools:context=".HomeFragment"
    android:orientation="vertical">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:gravity="center"
    app:elevation="0dp"
    android:id="@+id/appbarid">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:src="@drawable/travel"/>
</android.support.design.widget.AppBarLayout>

<android.support.design.widget.TabLayout
    android:id="@+id/tablayout_id"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    app:tabGravity="fill"
    app:tabIndicatorColor="@color/color1"
    app:tabMode="fixed"
    app:tabTextColor="@color/white">
</android.support.design.widget.TabLayout>

<android.support.v4.view.ViewPager
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/viewpager_id"></android.support.v4.view.ViewPager>

</LinearLayout>

这个ViewPageAdapter.java

package com.example.assus.wijhah0;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

public class HomeFragment extends Fragment {

private TabLayout tabLayout;
private AppBarLayout appBarLayout;
private ViewPager viewPager;


public HomeFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {


    View v = inflater.inflate(R.layout.fragment_home, container, false);

    tabLayout = v.findViewById(R.id.tablayout_id);
    appBarLayout = v.findViewById(R.id.tablayout_id);
    viewPager = v.findViewById(R.id.viewpager_id);
    ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());

    //adding fragments
    adapter.AddFragment( new LandmarkFragment(), "Landmark");
    adapter.AddFragment(new EventsFragment(), "Events");


    //adapter set up
    viewPager.setAdapter(adapter);
    tabLayout.setupWithViewPager(viewPager);

    // Inflate the layout for this fragment
    return v;
}}
   import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.ArrayList;
import java.util.List;

public class ViewPagerAdapter extends FragmentPagerAdapter{

private final List<Fragment> fragmentList = new ArrayList<>();
private final List<String> FragmentListTitles = new ArrayList<>();

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

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

@Override
public int getCount() {
    return FragmentListTitles.size();
}

public CharSequence getPageTitle(int position) {
    return FragmentListTitles.get(position);
} //end CharSequence



   public void AddFragment( Fragment fragment, String Title) {
        fragmentList.add(fragment);
        FragmentListTitles.add(Title);
    } // end Addfragment


} //end class
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入java.util.ArrayList;
导入java.util.List;
公共类ViewPagerAdapter扩展了FragmentPagerAdapter{
private final List fragmentList=new ArrayList();
私有最终列表FragmentListTitles=new ArrayList();
公共ViewPagerAdapter(碎片管理器fm){
超级(fm);
}
@凌驾
公共片段getItem(int位置){
返回碎片列表。获取(位置);
}
@凌驾
public int getCount(){
返回FragmentListTitles.size();
}
公共字符序列getPageTitle(int位置){
返回FragmentListTitles.get(位置);
}//结束字符序列
public void AddFragment(片段片段,字符串标题){
碎片列表。添加(碎片);
碎片列表标题。添加(标题);
}//end Addfragment
}//结束类
参见此处

tabLayout = v.findViewById(R.id.tablayout_id); appBarLayout = v.findViewById(R.id.tablayout_id);
更改:

tabLayout = v.findViewById(R.id.tablayout_id); appBarLayout = v.findViewById(R.id.appbarid);
关于这一点:

@Override public int getCount() { return FragmentListTitles.size(); }
这样更好

@Override public int getCount() { return fragmentList.size(); }
欢迎:)请确认我的回答。祝你好运