На данный вопрос уже ответили:
При компиляции приложение почему-то вылетает. Я только первый месяц работаю в Android Studio и сейчас начал разбираться c navigation drawer. Буду очень благодарен за советы и помощь в решении проблемы.
05-18 05:20:45.238 14998-14998/com.example.jone1.navig E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.jone1.navig, PID: 14998 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jone1.navig/com.example.jone1.navig.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.app.ActionBarDrawerToggle.syncState()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2706) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1514) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6221) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.app.ActionBarDrawerToggle.syncState()' on a null object reference at com.example.jone1.navig.MainActivity.onPostCreate(MainActivity.java:106) at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1200) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2688) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1514) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6221) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 05-18 05:20:49.824 14998-14998/com.example.jone1.navig I/Process: Sending signal. PID: 14998 SIG: 9
manifests:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.jone1.navig">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
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>
<activity
android:name=".Main5Activity"
android:label="@string/title_activity_main5" />
<activity android:name=".Main6Activity" />
<activity android:name=".Main7Activity"></activity>
</application>
</manifest>
MainActivity:
package com.example.jone1.navig;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
private DrawerLayout mDrawer;
private Toolbar toolbar;
// Убедитесь, что используется версия
// android.support.v7.app.ActionBarDrawerToggle.
// android.support.v4.app.ActionBarDrawerToggle устарел.
private ActionBarDrawerToggle drawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
final NavigationView nvDrawer;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Установить Toolbar для замены ActionBar'а.
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Найти наш view drawer'а
mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
// Настроить view drawer'а
// Найти наш view drawer'а
nvDrawer = (NavigationView) findViewById(R.id.nvView);
// Настроить view drawer'а
setupDrawerContent(nvDrawer);
}
private void setupDrawerContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
selectDrawerItem(menuItem);
return true;
}
});
}
private ActionBarDrawerToggle setupDrawerToggle() {
// Примечание: Убедитесь, что вы передаёте допустимую ссылку
// на toolbar
// ActionBarDrawToggle() не предусматривает в ней
// необходимости и не будет отображать иконку гамбургера без
// неё
return new ActionBarDrawerToggle(this, mDrawer, toolbar, R.string.drawer_open, R.string.drawer_close);
}
public void selectDrawerItem(MenuItem menuItem) {
// Создать новый фрагмент и задать фрагмент для отображения
// на основе нажатия на элемент навигации
Fragment fragment = null;
Class fragmentClass;
switch(menuItem.getItemId()) {
case R.id.nav_first_fragment:
fragmentClass = Main5Activity.class;
break;
case R.id.nav_second_fragment:
fragmentClass = Main6Activity.class;
break;
case R.id.nav_third_fragment:
fragmentClass = Main7Activity.class;
break;
default:
fragmentClass = FirstFragment.class;
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
// Вставить фрагмент, заменяя любой существующий
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit();
// Выделение существующего элемента выполнено с помощью
// NavigationView
menuItem.setChecked(true);
// Установить заголовок для action bar'а
setTitle(menuItem.getTitle());
// Закрыть navigation drawer
mDrawer.closeDrawers();
}
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Синхронизировать состояние переключения после того, как
// возникнет onRestoreInstanceState
drawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Передать любые изменения конфигурации переключателям
// drawer'а
drawerToggle.onConfigurationChanged(newConfig);
}
// ...
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Действие home/up action bar'а должно открывать или закрывать drawer.
if (drawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Main5Activity(код Main6Activity, Main7Activity выглядит примерно также): package com.example.jone1.navig;
import android.os.Bundle;
import android.app.Activity;
public class Main5Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5);
}
}
Все делал по примеру взятому с этого сайта
У вас в onPostCreate
вызывается drawerToggle.syncState()
, но при этом вы нигде не инициализируете drawerToggle
, там всегда null
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть два поля начальная дата и конечная дата На входе получить начальная дата c текущей датой, конечная дата должна быть выше начальная дата,...
Имеется list с несколькими значениямиНеобходимо сделать так, чтобы одно из значений всегда находилось внизу списка, независимо от того, чему...
У меня есть две таблицы USER_ и ORDER_Создал классы: