Ich habe eine App mit 3 Swipe-Tabs. Also habe ich zuerst die mainActivity und dann die 3 Fragmente erstellt.NullPointerException DrawerLayout in TabbedActivity
Ich versuche, einen navigationdrawer in meinem tabbedactivity zu implementieren, aber ich erhalte eine Fehlermeldung „Nullpointer“, wenn ich versuche, meine DrawerLayout abrufen ..
Ich bin auf der Haupttätigkeit der gesamten Code zu tun , ist so, dass ich tun sollte, oder? Oder muss ich die Navigationsleiste in jedem Fragment erstellen?
Hier ist meine mainactivity xml-Datei:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.example.dasilvadd.students.OngletCours">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/appbar_padding_top"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay">
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</RelativeLayout>
<android.support.design.widget.NavigationView
android:id="@+id/menu_navigation"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:layout_gravity="start"
android:visibility="invisible"
app:menu="@menu/navigation_menu"></android.support.design.widget.NavigationView>
Und in meinem mainActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_onglet_cours);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//récuperation des differents types de variables pour le menu de navigation
mDrawerLayout = (DrawerLayout)findViewById(R.id.drawerLayout);
mToogle = new ActionBarDrawerToggle(this,mDrawerLayout,toolbar,R.string.open,R.string.close);
//j'ajoute a mon DrawerLayout et je synchronise
mDrawerLayout.addDrawerListener(mToogle);
mToogle.syncState();
//je récupère le menu de navigation
NavigationView navigation = (NavigationView)findViewById(R.id.menu_navigation);
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
setTitle("Mes cours");
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
//ce Listener permet de detecter quel item a été choisi dans mon menu
navigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId())
{ //si c'est "Mes cours" qui a été choisi
case R.id.mes_cours:
//redirection vers la page "mes cours"
Intent cours = new Intent(OngletCours.this,MesCours.class);
startActivity(cours);
return true;
//actions a faire si "mes branches" a été choisi
case R.id.mes_branches:
Intent branche = new Intent(OngletCours.this,MesBranches.class);
branche.putExtra("ajouter","cours");
startActivity(branche);
return true;
case R.id.mes_jalons:
Intent jalons = new Intent(OngletCours.this,PageiTude.class);
startActivity(jalons);
}
return true;
}
});
@update - log Fehler
Caused by: java.lang.NullPointerException
at com.example.dasilvadd.students.OngletCours.onCreate(OngletCours.java:61)
at android.app.Activity.performCreate(Activity.java:5372)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
at android.app.ActivityThread.access$700(ActivityThread.java:159)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)
Können Sie mir erklären, die Error ? Ich hoffe es ist kein dummer Fehler ... Danke!
Eigentlich sagt es null, wenn ich diese Zeile zu tun, wie ist das möglich? – Dom
erhalten Sie immer noch NullPointerException? Wenn ja, dann poste deine Fehlerprotokolle – FAT
ich aktualisierte meine Frage überprüfe den Protokollfehler – Dom