Wie kann ich den Android Studio Navigation Drawer in allen Activities anzeigen ?

  • Antworten:15
  • Bentwortet
Flo R.
  • Forum-Beiträge: 61

13.12.2015, 15:51:33 via Website

Hi,

ich habe mir mit Android Studio einen Navigation Drawer erstellt.
Funktioniert alles gut soweit.
Bei einem Klick auf ein Item wird die Activity gewechselt.

Jetzt zu meiner Frage:

Wie kannn ich den Navigation Drawer in den anderen Activities anzeigen?
Bisher habe ich immer einen Zurück Button benutzt.

Ich habe schon bei Stackoverflow geguckt finde dort aber nichts zu meinem Anliegen passendes

Hier mein Quellcode ich hoffe es genügt. Wenn nicht poste ich nochmehr
MainActivity.java

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    FragmentManager fm = getFragmentManager();
    fm.beginTransaction().replace(R.id.content_frame, new MainFragment()).commit();


}

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;


}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_about) {

        Intent getNameScreenIntent2 = new Intent (this, AboutActivity.class);



        final int result = 1;

        startActivity(getNameScreenIntent2);

        return true;

        //Actionbar element für später
    }else if (id == R.id.action_phone){


    }

    return super.onOptionsItemSelected(item);

}


@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {

    FragmentManager fm = getFragmentManager();

    int id = item.getItemId();

    if (id == R.id.nav_home) {
        fm.beginTransaction().replace(R.id.content_frame, new MainFragment()).commit();
    } else if (id == R.id.nav_experiments) {

        Intent getNameScreenIntent = new Intent(this, ExperimentsList.class);

        final int result = 1;

        startActivity(getNameScreenIntent);


    } else if (id == R.id.nav_website) {

        Intent getNameScreenIntent = new Intent(this, Web.class);

        final int result = 1;

        startActivity(getNameScreenIntent);


    } else if (id == R.id.nav_share) {

        Intent share = new Intent(Intent.ACTION_SEND);
        share.setType("text/plain");
        share.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_text));
        startActivity(Intent.createChooser(share, getString(R.string.share_title)));


    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

}

Activity in der der Drawer auch angezeigt werden soll:

public class Activity1 extends AppCompatActivity{

ViewPager viewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Get the view from activity_main.xml
    setContentView(R.layout.activity_1);

    viewPager = (ViewPager) findViewById(R.id.view_pager);

    List<Fragment> listFragments = new ArrayList<Fragment>();
    listFragments.add(new Fragment1());
    listFragments.add(new Fragment2());
    listFragments.add(new Fragment3());

    MyFragmentPagerAdapter myFragmentPagerAdapter =  new MyFragmentPagerAdapter(
            getSupportFragmentManager(),listFragments);

    viewPager.setAdapter(myFragmentPagerAdapter);

}

}

— geändert am 13.12.2015, 16:11:37

Gelöschter AccountGelöschter Account

Antworten
Flo R.
  • Forum-Beiträge: 61

13.12.2015, 16:09:42 via Website

Bitte um Hilfe hab schon bei Stackoverflow geguckt finde dort aber nichts zu meinem Anliegen passendes

— geändert am 13.12.2015, 16:10:28

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.12.2015, 16:18:31 via App

Den Code des NavigstionDrawers muss in jeder Activity wiederholt werden.
Oder du erstellst dir eine Klasse dafür und rufst diese einfach nur aus der activity auf.

LG Pascal //It's not a bug, it's a feature. :) ;)

Gelöschter AccountFlo R.

Antworten
Flo R.
  • Forum-Beiträge: 61

13.12.2015, 16:43:38 via Website

@Pascal P
Danke für deine Antwort

Wie genau meinst du das?

Kannst du es vielleicht anhand meiner Activity1 veranschaulichen?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.12.2015, 17:13:01 via App

Den kompletten Code der den Drawe betrifft musst du auch in die 2. Activity kopieren oder eine Klasse für erstellen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Gelöschter AccountFlo R.

Antworten
Flo R.
  • Forum-Beiträge: 61

13.12.2015, 17:17:48 via Website

Der Drawer ist doch aber auch im Layout der MainActivity!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.12.2015, 17:45:12 via App

Ja das Layout muss du in der 2. Activity auch übernehmen

LG Pascal //It's not a bug, it's a feature. :) ;)

Gelöschter Account

Antworten
Flo R.
  • Forum-Beiträge: 61

13.12.2015, 19:51:02 via Website

Jetzt stürzt die App ab sobald die Activity geladen wird

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.12.2015, 19:53:38 via Website

Was ist der Fehler bzw. was sagt LogCat?

LG Pascal //It's not a bug, it's a feature. :) ;)

Gelöschter AccountFlo R.

Antworten
Flo R.
  • Forum-Beiträge: 61

13.12.2015, 20:06:04 via Website

Kann ich einfach mein Drawer Layout und meine Activity in der ich den Drawer haben möchte vielleicht habe ich was falsch gemacht

EDIT:
Logcat sagt:

12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime: FATAL EXCEPTION: main
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime: Process: flo.nawigator, PID: 31264
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity       ComponentInfo{flo.nawigator/flo.nawigator.ExperimentsList}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
 12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
 12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
 12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:156)
 12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)
 12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
 12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:211)
 12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5373)
 12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
 12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
 12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at flo.nawigator.ExperimentsList.onCreate(ExperimentsList.java:35)
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5990)
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442) 
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:156) 
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351) 
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102) 
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:211) 
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5373) 
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)  
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372) 
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020) 
12-13 20:12:59.743 31264-31264/flo.nawigator E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815) 

— geändert am 13.12.2015, 20:17:52

Antworten
Flo R.
  • Forum-Beiträge: 61

13.12.2015, 20:27:26 via Website

Vielleicht brauchst du um mir zu helfen mehr Source Code.

Soll ich noch was posten ?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.12.2015, 20:40:00 via App

Zuerstmal höre bitte auf hier Grundlos rumzuspammen und deinen Thread zu Pushen!

Der Log sagt doch schon alles:
NullPointerException
Dein ListView Objekt ist aus irgend einem Grund null und somit kann kein Adapter gesetzt werden.. Wird es denn auf dem Layout gefunden?

LG Pascal //It's not a bug, it's a feature. :) ;)

Gelöschter Account

Antworten
Flo R.
  • Forum-Beiträge: 61

13.12.2015, 20:43:26 via Website

Guck mal in die MainActivity da ist der Drawer drin.
Da ist er nicht null

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.12.2015, 20:44:28 via App

Hast du denn auch die layout xml der 2. Activity angepasst und ist da alles drin?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Flo R.
  • Forum-Beiträge: 61

13.12.2015, 20:46:31 via Website

Ja deswegen verstehe ich es nicht :D warum sich die App schließt

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.12.2015, 20:52:09 via App

Zeig mal den Code von der 2. activity der onCreate

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten