简体   繁体   English

Android 错误 [尝试调用虚拟方法 'void android.support.v7.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)]

[英]Android Error [Attempt to invoke virtual method 'void android.support.v7.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)]

I am trying to create a menu activity that uses a navigation drawer.我正在尝试创建一个使用导航抽屉的菜单活动。 At first I was using the getActionBar() and then i found out that i was supposed to change to getSupportActionBar() and extend AppCompactActivity which iI did but I still seem to be getting the same error:起初我使用 getActionBar() 然后我发现我应该更改为 getSupportActionBar() 并扩展我所做的 AppCompactActivity 但我似乎仍然遇到相同的错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void
android.support.v7.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)'
on a null object reference

could anyone know what could be causing the issue.谁能知道是什么导致了这个问题。 (Please let me know if i should upload any code) (如果我应该上传任何代码,请告诉我)

Here is my corresponding code:这是我对应的代码:

    mTitle = mDrawerTitle = getTitle();

    // load slide menu items
    navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);

    // nav drawer icons from resources
    navMenuIcons = getResources()
            .obtainTypedArray(R.array.nav_drawer_icons);

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.list_slidermenu);

    navDrawerItems = new ArrayList<NavDrawerItem>();

    // adding nav drawer items to array
    // Home
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
    // Find People
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
    // Photos
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
    // Communities, Will add a counter here
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1), true, "22"));
    // Pages
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1)));
    // What's hot, We  will add a counter here
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));


    // Recycle the typed array
    navMenuIcons.recycle();

    // setting the nav drawer list adapter
    adapter = new NavDrawerListAdapter(getApplicationContext(),
            navDrawerItems);
    mDrawerList.setAdapter(adapter);

    // enabling action bar app icon and behaving it as toggle button
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
            R.drawable.ic_drawer, //nav menu toggle icon
            R.string.app_name, // nav drawer open - description for accessibility
            R.string.app_name // nav drawer close - description for accessibility
    ){
        public void onDrawerClosed(View view) {
            getSupportActionBar().setTitle(
                    Html.fromHtml("<font color=\"black\">" + mTitle + "</font>"));

            // calling onPrepareOptionsMenu() to show action bar icons
            invalidateOptionsMenu();
        }

        public void onDrawerOpened(View drawerView) {
            getSupportActionBar().setTitle(
                    Html.fromHtml("<font color=\"black\">" + mDrawerTitle + "</font>"));

            // calling onPrepareOptionsMenu() to hide action bar icons
            invalidateOptionsMenu();
        }
    };
    mDrawerLayout.setDrawerListener(mDrawerToggle);

    if (savedInstanceState == null) {
        // on first time display view for first nav item
        //displayView(0);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_menu, menu);
    return true;
}

In your onCreate method do the following在您的 onCreate 方法中执行以下操作

public class ActivityDemo extends AppCompatActivity{
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_demo);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        //other statements
   }
   @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                this.finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
   }

Corresponding xml should be having content like this对应的 xml 应该有这样的内容

<android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"

    tools:context="com.dev.ActivityDemo">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay"
        android:id="@+id/settingsToolBar"
        >

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_settings"
        />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 android尝试在null对象Referenc上调用虚拟方法&#39;void android.app.ActionBar.setHomeButtonEnabled(boolean)&#39; - android Attempt to invoke virtual method 'void android.app.ActionBar.setHomeButtonEnabled(boolean)' on a null object referenc 尝试在空对象引用上调用虚方法&#39;void android.app.ActionBar.setHomeButtonEnabled(boolean)&#39; - Attempt to invoke virtual method 'void android.app.ActionBar.setHomeButtonEnabled(boolean)' on a null object reference Android NullPointerException尝试调用虚拟方法&#39;android.support.v7.app.ActionBar MainActivity.getSupportActionBar() - Android NullPointerException Attempt to invoke virtual method 'android.support.v7.app.ActionBar MainActivity.getSupportActionBar() 我有两个空指针尝试调用虚拟方法 &#39;void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean) - I am having a two null pointer Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean) 尝试调用虚方法 &#39;void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager - Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager 尝试调用虚拟方法&#39;android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()&#39;android - Attempt to invoke virtual method 'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()' android 我正在尝试调用虚拟方法&#39;void android.support.v7.widget.AppCompatImageView.setImageDrawable(android.graphics.drawable.Drawable)吗? - I am getting Attempt to invoke virtual method 'void android.support.v7.widget.AppCompatImageView.setImageDrawable(android.graphics.drawable.Drawable)? 尝试在空对象引用上调用虚拟方法“android.support.v7.app.AlertDialog android.support.v7.app.AlertDialog$Builder.create()” - Attempt to invoke virtual method 'android.support.v7.app.AlertDialog android.support.v7.app.AlertDialog$Builder.create()' on a null object reference 在andoid应用程序上出现错误'尝试调用虚拟方法'void android.widget.TextView.setText(java.lang.CharSequence)' - Getting error 'Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' ON andoid app 尝试在空对象引用上调用虚拟方法“boolean com.anjlab.android.iab.v3.BillingProcessor.loadOwnedPurchasesFromGoogle()” - Attempt to invoke virtual method 'boolean com.anjlab.android.iab.v3.BillingProcessor.loadOwnedPurchasesFromGoogle()' on a null object reference
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM