簡體   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)]

我正在嘗試創建一個使用導航抽屜的菜單活動。 起初我使用 getActionBar() 然后我發現我應該更改為 getSupportActionBar() 並擴展我所做的 AppCompactActivity 但我似乎仍然遇到相同的錯誤:

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

誰能知道是什么導致了這個問題。 (如果我應該上傳任何代碼,請告訴我)

這是我對應的代碼:

    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;
}

在您的 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);
        }
    }
   }

對應的 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; 嘗試在空對象引用上調用虛方法&#39;void android.app.ActionBar.setHomeButtonEnabled(boolean)&#39; Android NullPointerException嘗試調用虛擬方法&#39;android.support.v7.app.ActionBar MainActivity.getSupportActionBar() 我有兩個空指針嘗試調用虛擬方法 &#39;void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean) 嘗試調用虛方法 &#39;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 我正在嘗試調用虛擬方法&#39;void android.support.v7.widget.AppCompatImageView.setImageDrawable(android.graphics.drawable.Drawable)嗎? 嘗試在空對象引用上調用虛擬方法“android.support.v7.app.AlertDialog android.support.v7.app.AlertDialog$Builder.create()” 在andoid應用程序上出現錯誤'嘗試調用虛擬方法'void android.widget.TextView.setText(java.lang.CharSequence)' 嘗試在空對象引用上調用虛擬方法“boolean com.anjlab.android.iab.v3.BillingProcessor.loadOwnedPurchasesFromGoogle()”
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM