Android Navigationdrawerk从右到左单击汉堡按钮打开汉堡时出错。
我尝试了一些解决办法,但没有任何真正的帮助。我希望导航抽屉位于右侧。它应该弹出到左侧。 我使用android studio中的标准导航抽屉活动。 当我按下按钮打开导航抽屉时,应用程序崩溃。 我用一个教程把它带到右边,它工作了,但现在它崩溃了 我把错误信息作为链接放在这篇文章下面。 主要活动 activity_main.xml 我希望你能帮助我:)Android Navigationdrawerk从右到左单击汉堡按钮打开汉堡时出错。,android,Android,我尝试了一些解决办法,但没有任何真正的帮助。我希望导航抽屉位于右侧。它应该弹出到左侧。 我使用android studio中的标准导航抽屉活动。 当我按下按钮打开导航抽屉时,应用程序崩溃。 我用一个教程把它带到右边,它工作了,但现在它崩溃了 我把错误信息作为链接放在这篇文章下面。 主要活动 activity_main.xml 我希望你能帮助我:) Thx将您的onBackPressed()替换为 @Override public void onBackPressed() {
Thx将您的
onBackPressed()
替换为
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.END)) {
drawer.closeDrawer(GravityCompat.END);
} else {
super.onBackPressed();
}
}
在您的onNavigationItemSelected()
您需要为
ActionBarDrawerToggle
使用四参数构造函数,该构造函数不带工具栏
参数
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
然后在onOptionsItemSelected()
方法中,检查MenuItem
是否有主按钮的ID,如果有,切换抽屉状态
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
if (drawerLayout.isDrawerOpen(GravityCompat.END)) {
drawerLayout.closeDrawer(GravityCompat.END);
}
else {
drawerLayout.openDrawer(GravityCompat.END);
}
return true;
}
else if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
另外,在onBackPressed()
方法中,对DrawerLayout
方法调用的重力也是错误的
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_home"
android:icon="@drawable/ic_home_24dp"
android:title="Home" />
<item
android:id="@+id/finanzen"
android:icon="@drawable/ic_money_24dp"
android:title="Finanzen" />
<item
android:id="@+id/nav_slideshow"
android:icon="@drawable/ic_sport_24dp"
android:title="Sport" />
<item
android:id="@+id/nav_manage"
android:icon="@drawable/ic_list_24dp"
android:title="Listen" />
</group>
<item android:title="Weitere Optionen">
<menu>
<item
android:id="@+id/nav_share"
android:src="@android:drawable/ic_menu_my_calendar"
android:title="Kalender" />
<item
android:id="@+id/nav_send"
android:icon="@drawable/ic_menu_send"
android:title="Weiteres" />
</menu>
</item>
</menu>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.philipp.pinnaple">
<application
android:supportsRtl="true">
android:allowBackup="true">
android:icon="@mipmap/ic_launcher">
android:label="@string/app_name">
android:supportsRtl="true">
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.philipp.pinnaple"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.END)) {
drawer.closeDrawer(GravityCompat.END);
} else {
super.onBackPressed();
}
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.END);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
if (drawerLayout.isDrawerOpen(GravityCompat.END)) {
drawerLayout.closeDrawer(GravityCompat.END);
}
else {
drawerLayout.openDrawer(GravityCompat.END);
}
return true;
}
else if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}