Android Studio: исключение NullPointerException с getSupportActionBar () - PullRequest
0 голосов
/ 23 марта 2020

Я хочу показать ActionBar в своей Деятельности, показывая только закрывающий символ. Поэтому я использовал метод getSupportActionBar ():

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close);
        setTitle("Add Event");

Но он выбрасывает NullPointerExeption, потому что, очевидно, нет ActionBar для вызова:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tutorial/com.example.tutorial.AddEventActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setHomeAsUpIndicator(int)' on a null object reference

В моей MainActivity я реализовал Навигацию по ящику, где я Уже используется панель инструментов, которая работает:

public class MainActivity extends AppCompatActivity {

    protected DrawerLayout mDrawer;
    private Toolbar toolbar;
    private NavigationView nvDrawer;

    // Make sure to be using androidx.appcompat.app.ActionBarDrawerToggle version.
    private ActionBarDrawerToggle drawerToggle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        // Set a Toolbar to replace the ActionBar.
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        // This will display an Up icon (<-), we will replace it with hamburger later
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        // Find our drawer view
        mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawerToggle = setupDrawerToggle();

        // Setup toggle to display hamburger icon with nice animation
        drawerToggle.setDrawerIndicatorEnabled(true);
        drawerToggle.syncState();

        // Tie DrawerLayout events to the ActionBarToggle
        mDrawer.addDrawerListener(drawerToggle);

        // Find our drawer view
        nvDrawer = (NavigationView) findViewById(R.id.nvView);
        // Setup drawer view
        setupDrawerContent(nvDrawer);
    }

Как это исправить? Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Вы можете попытаться добавить следующий атрибут к вашему MainActivity элементу под вашим ActivityManifest.xml

android:theme="@style/Theme.AppCompat.Light.DarkActionBar"

Затем попробуйте получить к нему доступ с помощью getSupportActionBar(). Таким образом, вы можете выбрать действия, которые вы не хотите или не хотите включать панели действий, используя соответствующие темы. Например:

<activity
    android:name=".SecondActivity"
    android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
    android:parentActivityName=".MainActivity" />
0 голосов
/ 23 марта 2020

Замените эту строку:

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);

этой строкой:

ActionBar actionBar = getSupportActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

Это должно решить вашу проблему.

...