Navigation Drawer Activity MenuItem auf Project Template

Status
Dieses Thema wurde gelöst! Zur Lösung springen…
T

Tom48

Neues Mitglied
1
Hallo alle zusammen,

ich habe lange nicht mehr mifür Android gemacht und mir nun mit Android Studio 3.6.2 ein Projekt aus dem Template "Navigation Drawer Activity" erstellt.
Erst auch ohne etwas zu änderen!
Wenn ich die leere App nun auf einem Gerät starte auch auch im AVD, kann ich nicht auf ein Menuitem klicken.
Ich habe auch schon den OnNavigationItemSelectedListener probiert, aber der wird nicht aufgerufen.

Glaub es ist nur eine kleiner Gedanke der mit fehlt da ich lang lang nicht mehr gemachte hab.

Schon mal vielen Dank und zur heutigen Zeit auch Gesundheit !

Thomas
 
Empfohlene Antwort(en)
Ja bei beiden datein ist die reienfolge falsch.
ist ja noch ein coordinatorlayout und da die reienfolge wichtig.

activity_main.xml
content_main.xml

Ps. habe es in deinem Projekt geändert dann geht auch deines mei mir.
Beiträge automatisch zusammengeführt:

Na dann haben wir es ja mit vereinten Kräften gelöst.
Aber das mit den Support libs ist trotzdem nicht gut und richtig.
 
Zuletzt bearbeitet:
Alle Antworten (20)
Danke für die schnelle Antwort.

und ja den Thread hatte ich mir auch durchgelesen. Ich hab auch gesehen das es nun auch mit einem NavController, navGraph und dem Bearbeiten im Drawer geht.
Nur fehlt mit der Schritt warum im Projekt Template auf das Auswählen der Menuitem nicht reagiert wird, kein Fehler oder so in den Logs.
Und der NavController ist noch mit den "vorgegebenen" xml Dateien eingerichtet.
 
Dann zeige mal den Code. In dem neuen andoidx Code ist kein listner mehr und wird auch nicht gebraucht.

Deine Fragments hast du hoffentlich auch hier eingetragen.
Code:
mAppBarConfiguration = new AppBarConfiguration.Builder( R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow) .setDrawerLayout(drawer) .build();
 
Zuletzt bearbeitet:
das ist der automatisch generierte Code vom Android Studio

Code:
package de.muster.dmenutest;

import android.os.Bundle;
import android.view.View;
import android.view.Menu;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.design.widget.NavigationView;

import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;

import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;

public class MainActivity extends AppCompatActivity
     {

    private AppBarConfiguration mAppBarConfiguration;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);
    }

    @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 onSupportNavigateUp() {
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        return NavigationUI.navigateUp(navController, mAppBarConfiguration)
                || super.onSupportNavigateUp();
    }

}
Beiträge automatisch zusammengeführt:

klar ist das auch so drin.
Ich hab den erstellten Code ohne Änderungen probiert und es geht nicht.
Beiträge automatisch zusammengeführt:
 
Zuletzt bearbeitet:
Hatte gestern alles Updaten lassen.
Gut das SDK 28 ist nur "Partially installed" :(
Ich installieren mal 28 und 29. Probiere es dann noch mal.



Code:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 28


    defaultConfig {
        applicationId "de.muster.dmenutest"
        minSdkVersion 18
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.navigation:navigation-fragment:2.2.1'
    implementation 'androidx.navigation:navigation-ui:2.2.1'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
Beiträge automatisch zusammengeführt:

so SDK 28 und 29 auch drauf. Und ich hab das 29er mal als compileVersion genommen.
aber jetzt ist das NavMenu unter einen grauen "Layout" und hinter der oberen Leiste.
Auch wenn ich das komplette neu erstelle.
Ich suche mir einen anderen Weg oder einen neuen frischen PC.

Aber der Tip mit dem SDK war gut!
Hatte gedacht das es ja nur so eine Kleinigkeit ist.
 
Zuletzt bearbeitet:
Gut bei diesem gradle dürften solche Imports nicht sein.
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;

Nur min sdk 18 finde ich etwas tief. Bin mir nicht sicher Androidx glaube erst ab 21
 
Ok mit min SDK 22 sind die Imports auch raus.
Aber es geht auch unter SDK 22 nicht auf dem Handy.
Beiträge automatisch zusammengeführt:

dann auf die schnelle halt doch wieder wie gewohnt, will für diese Idee auch gerne sdk18 ansprechen.
Vielleicht finde ich ja auch noch den Fehler dann gibt es beides ;)
 
Zuletzt bearbeitet:
an der 18 wird es nicht ligen.
Vielmehr wie du das Projekt erstellst du darfst keinen Haken bei "use legacey android.suppord libaries" machen.
Unbenannt.png


Code:
package com.jw.myapplication;

import android.os.Bundle;
import android.view.View;
import android.view.Menu;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.navigation.NavigationView;

import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

public class MainActivity extends AppCompatActivity {

    private AppBarConfiguration mAppBarConfiguration;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);
    }

    @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 onSupportNavigateUp() {
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        return NavigationUI.navigateUp(navController, mAppBarConfiguration)
                || super.onSupportNavigateUp();
    }
}


Code:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig {
        applicationId "com.jw.myapplication"
        minSdkVersion 18
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.navigation:navigation-fragment:2.2.1'
    implementation 'androidx.navigation:navigation-ui:2.2.1'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
 
Das hatte ich erst auch nicht gemacht.
um es zu testen aber schon mal. habe aber vorher immer die Projekte komplette gelöscht.
Nur hier mal ein Screen vom Handy, das die App auch startet ;) Es bleibt immer auf Home.
Beiträge automatisch zusammengeführt:

hab das gerade noch mal gemacht vor den Screen.
und auch deinen Code und Gradle mit meinem verglichen, passen !
 

Anhänge

  • 1585840721053.png
    1585840721053.png
    75,2 KB · Aufrufe: 174
  • device-2020-04-02-172315.png
    device-2020-04-02-172315.png
    111,6 KB · Aufrufe: 177
Zuletzt bearbeitet:
was meinst du immer auf Home? Der erste Eintrag ist der defult Eintrag der ist immer activ beim App Start.
 
Das weiss ich und wenn ich den Start Parameter ändere zeigt es mir auch das passende Fragment im HostFrame an.
ich kann aber nicht auf Gallery oder Slideshow klicken, es passiert nichts und wird auch kein Fragment gewechselt.
Ich denke dafür ist der NavController da.
 
im Anhang ein Projekt wie es bei mir erstellt wurde und das Läuft.
 

Anhänge

  • settings.zip
    517,3 KB · Aufrufe: 29
ja, super deine Version läuft bei mir auf den alten Handy!!
Hier mal meine
Beiträge automatisch zusammengeführt:

Die Linux Version vom Studio bringt ja keine Probleme, oder? ;)
 

Anhänge

  • Dmenutest.zip
    540,3 KB · Aufrufe: 31
Zuletzt bearbeitet:
achso du arbeitest unter Linux. Ich Win 10.
kann schon sein das es daran ligt.

deine Version geht bei mir nicht.

habe es aber noch nicht verglichen.
 
ich habe den Fehler gefunden!!

Code:
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.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/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

WENN ES HIER STEHT GEHT ALLES !!!

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        android:background="@color/colorGrey"
        app:itemIconTint="@color/colorBlack"
        app:itemTextColor="@color/colorBlack"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />
    
HIER STEHT ES BEI LINUX UND IST FALSCH !!
    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.drawerlayout.widget.DrawerLayout>
 
  • Danke
Reaktionen: jogimuc
Es liegt an dem include in der activity_main.xml !
Also bei Linux aufpassen
Beiträge automatisch zusammengeführt:

Also war ich doch nicht zu .... ;)
ich bin schon seit gestern Mittag am suchen gewesen!!
 
Zuletzt bearbeitet:
Ja bei beiden datein ist die reienfolge falsch.
ist ja noch ein coordinatorlayout und da die reienfolge wichtig.

activity_main.xml
content_main.xml

Ps. habe es in deinem Projekt geändert dann geht auch deines mei mir.
Beiträge automatisch zusammengeführt:

Na dann haben wir es ja mit vereinten Kräften gelöst.
Aber das mit den Support libs ist trotzdem nicht gut und richtig.
 
Zuletzt bearbeitet:
Die Libs hatte ich aber so auch schon raus.
Die Dateien von mir waren ja so auch original erstellt worden durch das Template
OK dann mal danke!! Und bleibt gesund!

Thomas
 
Zuletzt bearbeitet:
Danke bleib ebenfals gesund.

Ps. und jetzt umstig auf Win ? oder nein?
 
Zuletzt bearbeitet:
Status
Dieses Thema wurde gelöst! Zur Lösung springen…

Ähnliche Themen

A
  • AnimaAngelo85
Antworten
1
Aufrufe
345
swa00
swa00
M
  • MikelKatzengreis
Antworten
5
Aufrufe
164
swa00
swa00
B
Antworten
4
Aufrufe
512
bb321
B
Zurück
Oben Unten