I'm trying to add a fragment that contains a TabLayout
View, but I keep getting the error:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.design.widget.TabLayout$Tab android.support.design.widget.TabLayout.newTab()' on a null object reference
at ca.rev.revcore.MainActivity.onCreate(MainActivity.java:76)
This is the layout I'm trying to add:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rev_tablayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/RevStyle_PlaceNewBagBttn">
<android.support.design.widget.TabItem
android:id="@+id/tabItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tab1" />
</android.support.design.widget.TabLayout>
And this is how I'm trying to add it:
TabLayout tabLayout = (TabLayout) findViewById(R.id.rev_tablayout);
tabLayout.addTab(tabLayout.newTab().setText("Upload"));
tabLayout.addTab(tabLayout.newTab().setText("Pics"));
tabLayout.addTab(tabLayout.newTab().setText("Vids"));
tabLayout.addTab(tabLayout.newTab().setText("Papers"));
tabLayout.getTabAt(0).setIcon(R.drawable.ic_publish_black_24dp);
tabLayout.getTabAt(1).setIcon(R.drawable.ic_menu_camera);
tabLayout.getTabAt(2).setIcon(R.drawable.ic_videocam_black_24dp);
tabLayout.getTabAt(3).setIcon(R.drawable.ic_airplay_black_24dp);
What could I be missing?
Vielen dank im voraus.
If you are using fragment then. Change
TabLayout tabLayout = (TabLayout) findViewById(R.id.rev_tablayout);
to
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.rev_tablayout);
view
is the object which will inflate your layout file and return view in onCreateView()
method.
If you are using fragment then. binding of controls like this in your oncreate view where you inflate your layout
View rootView = inflater.inflate(R.layout.fragment_, container, false);
TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tablayout);
Override onCreateView() method in Fragment, and inflate the Fragment layouts using LayoutInflater Class object and by passing the ViewGroup argument which is the activity in which the fragment will be embedded.
TabLayout tabLayout = (TabLayout) your_View_OBJ.findViewById(R.id.rev_tablayout);
Demo
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.your_xml_name, container, false);
TabLayout tabLayout = (TabLayout)rootView.findViewById(R.id.rev_tablayout);
return rootView;
}
Is Tab Layout with id rev_tablayout in activity_main xml or is it in fragment's layout? please check where you are trying to access the tablayout.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.