2017-07-14 3 views
0

Ich versuche, ein Fragment hinzuzufügen, die eine TabLayout Ansicht enthält, aber ich erhalte die Störung zu erhalten:Wie ein Fragment in Android hinzuzufügen

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) 

Dies ist das Layout ich hinzufügen bin versucht:

<?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> 

Und das ist, wie ich versuche, es hinzuzufügen:

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); 

Was ich vermisst werden könnte?

Vielen Dank im voraus.

+0

geben Sie Ihren vollständigen activity.java Code –

+0

hinzufügen vollständigen Code sowohl Java aufblasen und XML-Dateien –

Antwort

3

Wenn Sie Fragment dann verwenden. Ändern

TabLayout tabLayout = (TabLayout) findViewById(R.id.rev_tablayout); 

zu

TabLayout tabLayout = (TabLayout) view.findViewById(R.id.rev_tablayout); 

view das Objekt, das Ihre Layout-Datei aufblasen und das Rückansicht in onCreateView() Verfahren.

+0

Danke für die Antwort @ Piyush, aber was ist hier anzeigen? Es tut uns leid. Ich bin ein kompletter ANDroid-Neuling. –

+1

'View = inflater.inflate (R.layout.fragment_layout, container, false);' die Ihr Layout aufblasen und die Ansicht in der 'onCreateView()' Methode zurückgeben. – Piyush

+0

Ich kann wirklich nicht dankbar genug sein @Piyush. Schon so lange dabei gewesen. Vielen Dank. –

0

Ist das Tab-Layout mit der ID rev_tablayout in activity_main xml oder ist es im Fragment-Layout? Bitte überprüfen Sie, wo Sie versuchen, auf das Tablayout zuzugreifen.

1

Wenn Sie Fragment dann verwenden. in Ihrer oncreate Ansicht von Kontrollen wie diese Bindung, wo Sie Ihr Layout

View rootView = inflater.inflate(R.layout.fragment_, container, false); 
TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tablayout); 
1

Override onCreateView() method in Fragment, and inflate the Fragment layouts using LayoutInflater Class object and by pass­ing the ViewGroup argu­ment which is the activity in which the frag­ment will be embedded.

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; 
} 
Verwandte Themen