ข้อผิดพลาดของ Android [พยายามเรียกใช้วิธีการเสมือน 'void android.app.ActionBar' ในการอ้างอิงวัตถุว่าง]


102

ฉันมีโมดูลรหัสที่ใช้ viewpager พร้อมลิ้นชักการนำทางอย่างไรก็ตามเมื่อฉันเรียกใช้รหัสฉันได้รับข้อผิดพลาดต่อไปนี้

01-26 09:20:02.958: D/AndroidRuntime(18779): Shutting down VM
01-26 09:20:02.959: E/AndroidRuntime(18779): FATAL EXCEPTION: main
01-26 09:20:02.959: E/AndroidRuntime(18779): Process: com.example.tabwithslidingdrawer, PID: 18779
01-26 09:20:02.959: E/AndroidRuntime(18779): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tabwithslidingdrawer/com.example.tabwithslidingdrawer.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.ActivityThread.access$800(ActivityThread.java:148)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.os.Handler.dispatchMessage(Handler.java:102)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.os.Looper.loop(Looper.java:135)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.ActivityThread.main(ActivityThread.java:5312)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at java.lang.reflect.Method.invoke(Native Method)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at java.lang.reflect.Method.invoke(Method.java:372)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
01-26 09:20:02.959: E/AndroidRuntime(18779): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
01-26 09:20:02.959: E/AndroidRuntime(18779):    at com.example.tabwithslidingdrawer.MainActivity.onCreate(MainActivity.java:95)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.Activity.performCreate(Activity.java:5953)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
01-26 09:20:02.959: E/AndroidRuntime(18779):    ... 10 more
09:20:02.959: E/AndroidRuntime(18779): Caused by:
java.lang.NullPointerException: Attempt to invoke virtual method 'void
android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null
object reference 01-26 09:20:02.959: E/AndroidRuntime(18779):     at
com.example.tabwithslidingdrawer.MainActivity.onCreate(MainActivity.java:95)

ชี้ไปที่บรรทัดนี้

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

รหัสทั้งหมด http://pastebin.com/u1K72fr7

รายการของฉัน

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tabwithslidingdrawer"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Tabwithpager" >
        <activity
            android:name="com.example.tabwithslidingdrawer.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

android: theme = "@ style / Theme.Tabwithpager"

รหัส http://pastebin.com/EFQLzRej

================================================== ================ แก้ไข / อัปเดต:

สิ่งที่ได้เรียนรู้จากสิ่งนี้

เมื่อใดก็ตามที่เกิดข้อผิดพลาด

1. ตรวจสอบว่ามีการใช้กิจกรรมประเภทใดเป็นกิจกรรม android.app แบบง่ายหรือ AppCompatActivity หรือ ActionBarActivity เป็นต้น

2. ตรวจสอบว่าประเภทกิจกรรมของคุณที่ขยายอยู่ภายใต้หมวดหมู่ที่เข้ากันได้หรือไม่

ตัวอย่างกิจกรรม / Fragment ที่ใช้ android.app เป็นประเภทที่ไม่ใช่ appCompat ในขณะที่ android.support.v4.app.Fragment หรือ android.support.v4.app.ActivityCompat เป็น appCompat ตาม

หากอยู่ภายใต้ appCompat เราใช้ getSupportActionBar () else สำหรับประเภท android.app เราสามารถใช้ getActionBar ()

3. ตรวจสอบธีมที่ใช้กับกิจกรรมที่เป็นปัญหาในไฟล์รายการ

ตัวอย่าง: ในไฟล์รายการหากใช้ธีมเป็นพูดว่า android: theme = "@ android: style / Theme.Holo.Dialog" getActionBar () จะทำงาน

แต่หากใช้ธีมสำหรับกิจกรรมในรายการเป็นดังนี้ android: theme = "@ style / Theme.AppCompat.Light" คุณต้องใช้ getSupportActionBar ()


3
คุณลองดูgetSupportActionbar()ไหม
Kingfisher Phuoc

ฉันใช้ getSupportActionbar อยู่แล้วในรหัสของฉัน
ViVekH

คุณใช้ธีมที่เข้ากันได้กับแอพหรือไม่ คุณควรโพสต์ไฟล์ Manifest พร้อมประกาศกิจกรรมของคุณที่นี่เพื่อรับความช่วยเหลือเพิ่มเติม
Kingfisher Phuoc

คุณควรดูรหัสของคุณอีกครั้ง ฉันสามารถรับsupportActionBar(ไม่ใช่ค่าว่าง) ด้วยธีมของคุณ คุณแทนที่ทั้งหมดgetActionBarด้วยgetSupportActionBarหรือไม่? อีกอย่างคุณควรอัปเดตบันทึกข้อผิดพลาดใหม่
Kingfisher Phuoc

1
ฉันดูรหัสของคุณ ที่จริงแล้วคุณยังคงใช้getActionBar()ในของคุณMainActivity... getSupportActionBarตรวจสอบและการเปลี่ยนแปลง
Kingfisher Phuoc

คำตอบ:


153

รหัสของคุณถูกส่งไปที่com.example.tabwithslidingdrawer.MainActivity.onCreate(MainActivity.java:95):

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

ปัญหาคือสวยเรียบง่ายของคุณคือการสืบทอดจากใหม่Activity android.support.v7.app.ActionBarActivityคุณควรจะใช้การเรียกร้องให้แทนgetSupportActionBar()getActionBar()

หากคุณมองไปข้างบนรอบ ๆ บรรทัดที่ 65 ของโค้ดคุณจะเห็นว่าคุณกำลังทำสิ่งนั้นอยู่แล้ว:

        actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        // TODO: Remove the redundant calls to getSupportActionBar()
        //       and use variable actionBar instead
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

จากนั้นลดลงรอบ ๆ บรรทัดที่ 87 ดูเหมือนว่าคุณคิดเหมือนกัน:

        getSupportActionBar().setTitle(
                        Html.fromHtml("<font color=\"black\">" + mTitle + " - "
                                        + menutitles[0] + "</font>"));
        // getActionBar().setTitle(mTitle +menutitles[0]);

สังเกตว่าคุณแสดงความคิดเห็นgetActionBar()อย่างไร


8
เพียงบันทึก: ได้รับการคัดค้านในความโปรดปรานของandroid.support.v7.app.ActionBarActivity android.support.v7.app.AppCompatActivityแต่ประเด็นก็เหมือนกัน
Funktional

1
ภายในชิ้นส่วนดูที่นี่
แจ็คเทรด

31

หากใครต้องการใช้android.app.ActionBarและandroid.app.Activityคุณควรเปลี่ยนธีมของแอปในstyles.xmlเช่น

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

ปัญหาคือคุณอาจใช้ธีมAppCompat

ในทางกลับกันหากคุณต้องการใช้android.support.v7.app.ActionBarและคุณขยายกิจกรรมของคุณด้วยAppCompatActivityคุณต้องใช้ธีมAppCompatเพื่อหลีกเลี่ยงปัญหานี้เช่น:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

หวังว่านี่จะช่วยได้


คุณยังสามารถขยายจากAppCompatActivityแทนActivityเช่นในคำตอบนี้
Keith

แน่นอน @Keith หากคุณต้องการใช้ธีม AppCompat คุณต้องใช้ AppCompatActivity มิฉะนั้นคุณจะมีปัญหาเข้ากันไม่ได้เหมือนกัน
crubio

@crubio ขอบคุณ!
Kumaresh Babu NS

18

เมื่อคุณขยาย appcompatActivityจากนั้นใช้

this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);

และเมื่อคุณขยาย ActionBar ให้ใช้

this.getActionBar().setDisplayHomeAsUpEnabled(true);

อย่าลืมเรียกใช้ฟังก์ชันนี้ใน oncreate หลังจากเริ่มต้นแถบเครื่องมือ / actionbar


12

ฉันคิดว่าสิ่งที่คุณต้องการทำคือแคสต์ getActivity () ตัวอย่างเช่น:

((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);

นี่คือสิ่งที่คุณต้องทำกับไลบรารีการสนับสนุนใหม่ AppCompatActivity เข้ามาแทนที่ ActionBarActivity


7

ลองเช็คที่นี่

res >> ค่า >> styles.xml

ตรวจสอบให้แน่ใจว่าไม่มีรหัสเช่นนี้

<item name="windowActionBar">false</item>

หากมีรหัสเช่นนั้นคุณสามารถปิดการใช้งานชั่วขณะหนึ่งหรือลบออก


ขอบคุณที่เตือน !! : DI ทิ้งไว้<item name="windowNoTitle">true</item>ด้วยซึ่งต้องถอดออก
gujci

สำหรับฉันสิ่งที่ได้ผลคือลบออกandroid:theme="@style/AppTheme.NoActionBar"จาก<avticity>แท็กบน AndroidManifest.xml
Smaily Carrilho

4

เมื่อใช้ AppCompatActivity ต้องโทร

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

ก่อน getSupportActionBar()

public class PageActivity extends AppCompatActivity {
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_item);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        this.getSupportActionBar().setDisplayHomeAsUpEnabled(false);

    }
}

3

ในกรณีของฉันเป็นเพราะstyles.xmlตั้งค่าธีมหลักที่ผิดกล่าวคือNoActionBarธีมของหลักสูตรgetSupportActionbar()เป็นโมฆะ:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

เปลี่ยนเป็นอย่างอื่นแก้ไขได้:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

2

โดยปกติปุ่มขึ้นจะเปิดใช้งานสำหรับกิจกรรมระดับต่ำ ในรายการของคุณฉันเห็นเฉพาะ MainActivity ฉันไม่คิดว่าการเปิดใช้งานปุ่มขึ้นสำหรับกิจกรรมหลักจะเหมาะสม สร้างกิจกรรมจากนั้นในรายการให้เพิ่มแอตทริบิวต์ parentActivityName จากนั้นเปิดใช้งานปุ่มขึ้นบนเมธอด onCreate ของกิจกรรม
สิ่งนี้น่าจะช่วยได้
https://developer.android.com/training/appbar/up-action.html


2

ลองใช้สิ่งนี้หวังว่าจะได้ผลรหัสของฉันใช้งานได้ดี

Toolbar toolbar = findViewById(R.id.toolbar1);
setSupportActionBar(toolbar);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setTitle("");

1

ในบรรทัดนี้ในกิจกรรมของคุณ:

super.onCreate(savedInstanceState);
setContentView(R.layout.Activity_Main);

ใช้สิ่งนี้:

super.onCreate(savedInstanceState);
setContentView(R.layout.*);

* เป็นกิจกรรมของคุณ


1

ในกรณีของฉันฉันมีข้อผิดพลาดเดียวกัน แต่ความผิดพลาดของฉันคือฉันไม่ได้ประกาศ Toolbar ของฉัน

ดังนั้นก่อนที่ฉันจะใช้ getSupportActionBar ฉันต้องหาแถบเครื่องมือของฉันและตั้งค่า actionBar

    appbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(appbar);

    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_nav_menu);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

1

ฉันรู้ว่าคำถามนี้เป็นคำถามเก่า ๆ แต่สิ่งนี้สามารถช่วยหลายคนที่นำเสนอปัญหานี้

ในการแก้ปัญหานี้ให้ตรวจสอบว่ามีจุดว่างหรือไม่ จากนั้นใช้การกำหนดค่าที่เกี่ยวข้อง:

if(getSupportActionBar() != null){
 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 getSupportActionBar().setHomeButtonEnabled(true);
}


1

หากคุณพบข้อผิดพลาดนี้

"java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setTitle (java.lang.CharSequence)' on a null object reference. "

เพียงแค่ใช้

setSupportActionBar (toolbar). 

0

สำหรับใครก็ตามที่มี BaseActivity และลูกที่ขยายออกไปจากนั้นตรวจสอบให้แน่ใจว่า super.onCreate () ถูกเรียกก่อนที่คุณจะทำอะไร กิจกรรมเก่าจะใช้ได้ถ้าคุณเรียก super.onCreate () ในภายหลัง

เด็กขยายกิจกรรม - สามารถโทรหาซุปเปอร์หลังจากที่คุณทำสิ่งต่างๆ

@Override
protected void onCreate(Bundle savedInstanceState)
{
    getActionBar().setDisplayHomeAsUpEnabled(true);
    super.onCreate(savedInstanceState);

เด็กขยาย AppCompatActivity - ต้องโทรหาซุปเปอร์ก่อน

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState); //do this first
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

0

สำหรับผู้ที่ยังคงมีปัญหานี้ปัญหาของฉันได้รับการแก้ไขแล้วในไฟล์ AndroidManifest.xml สถานที่ที่ว่า<activity android:name=".MainActivity" android:theme="@style/AppTheme.NoActionBar">คุณจะต้องลบNoActionBarทำให้มันเป็น<activity android:name=".MainActivity" android:theme="@style/AppTheme">เพราะมี NoActionBar ตั้งค่าต่างรู้ไม่ว่าหรือไม่ก็อยากบาร์ดำเนินการเมื่อคุณเรียกหนึ่งขึ้นภายใน MainActivity.java


0

ฉันได้รับข้อผิดพลาดเดียวกันครั้งหนึ่งฉันสร้างเทมเพลตสำหรับแถบเครื่องมือเริ่มต้น (toolbar.xml) จากนั้นในมุมมองอื่นฉันสร้างแถบเครื่องมือที่ยุบได้

ฉันต้องการเพิ่มแถบเครื่องมือที่ยุบได้ในมุมมองที่แสดงข้อมูลบางอย่างของผู้ใช้ (เช่น whatsapp) แต่วิธีการ findViewById กำลังอ้างอิงแถบเครื่องมือเริ่มต้น (แถบเครื่องมือ id) ไม่ใช่แถบที่ยุบได้ (แถบเครื่องมือ id ด้วย) ใช่ฉันเขียน รหัสเดียวกันกับแถบเครื่องมือทั้งสองดังนั้นเมื่อฉันพยายามเข้าถึงกิจกรรมแอปขัดข้องแสดงข้อผิดพลาด

ฉันแก้ไขข้อผิดพลาดโดยเปลี่ยน id ของแถบเครื่องมือที่ยุบได้เป็น id: col_toolbar และข้อผิดพลาดหายไปและแอปของฉันทำงานได้อย่างสมบูรณ์


0

คุณควรลองอันนี้ ฉันคิดว่ามันจะได้ผล

    Toolbar toolbar = findViewById(R.id.toolbar1);
    setSupportActionBar(toolbar);

    mDrawerLayout = findViewById(R.id.drawer_layout);
    mDrawerLayout = findViewById(R.id.drawer_layout);
    mDrawerLayout.setDrawerShadow(R.drawable.rectagle_with_black_outer,
            GravityCompat.START);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
            toolbar, R.string.navigation_drawer_close,
            R.string.navigation_drawer_close) {
        public void onDrawerClosed(View view) {
            invalidateOptionsMenu();
        }

        public void onDrawerOpened(View drawerView) {
            invalidateOptionsMenu();
        }
    };

0

ทางออกที่ดีที่สุดทำในวิธี Oncreate ของคุณ

 ActionBar actionBar = getSupportActionBar();

        if(actionBar != null){
            actionBar.setDisplayHomeAsUpEnabled(true);
        }

ตามด้วยคลาสใหม่

@Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();

        if(id == android.R.id.home){
            onBackPressed();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


แม้ว่าข้อมูลโค้ดนี้อาจตอบคำถามได้รวมถึงคำอธิบายว่าเหตุใดและช่วยแก้ปัญหาได้อย่างไรจึงช่วยเพิ่มคุณภาพและอายุการใช้งานของคำตอบของคุณ ดูฉันจะเขียนคำตอบที่ดีได้อย่างไร?
ammportal

0

กรุณาเพิ่มหลัง Toolbar

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().hide();

0

ฉันยังใหม่กับการพัฒนาแอป Android ฉันพบข้อผิดพลาดนี้และใช้เวลาเกือบ 5 ชั่วโมงในการพยายามแก้ไข ในที่สุดฉันพบว่าสิ่งต่อไปนี้เป็นสาเหตุของปัญหานี้และหากใครก็ตามที่ต้องเผชิญกับปัญหานี้อีกในอนาคตโปรดอ่านเรื่องนี้

ฉันพยายามสร้าง Home Activitiy ที่มีพื้นหลังวิดีโอซึ่งฉันต้องเปลี่ยนธีมหลักจากการตั้งค่าเริ่มต้นTheme.AppCompat.Light.DarkActionBarเป็นTheme.AppCompat.Light.NoActionBarการสิ่งนี้ใช้งานได้ดีสำหรับกิจกรรมในบ้าน แต่เมื่อฉันตั้งค่าปุ่มใหม่ด้วย onclicklistener เพื่อนำทางไปยังกิจกรรมอื่นซึ่งฉันได้ตั้งค่าข้อความที่กำหนดเองให้กับแถบการดำเนินการข้อผิดพลาดนี้จะเกิดขึ้น

ดังนั้นสิ่งที่ฉันทำคือสร้างสองธีมและกำหนดให้กับกิจกรรมดังนี้

Theme.AppCompat.Light.DarkActionBar - for Activities with Action Bar (default)
Theme.AppCompat.Light.NoActionBar - for Activities without Action Bar 

ฉันได้ทำการเปลี่ยนแปลงต่อไปนี้เพื่อแก้ไขข้อผิดพลาด

  1. การกำหนดธีมใน styles.xml

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    
    <style name="DefaultTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    
  2. การเชื่อมโยงกิจกรรมกับธีมที่เกี่ยวข้องใน AndroidManifest.xml

    <activity android:name=".Payment"
        android:theme="@style/DefaultTheme"/>
    
    <activity android:name=".WelcomeHome"
        android:theme="@style/AppTheme.NoActionBar">
    

-1

เมื่อใดก็ตามที่เกิดข้อผิดพลาด ลองตรวจสอบสิ่งต่อไปนี้

  1. ตรวจสอบว่ามีการใช้กิจกรรมประเภทใดเป็นกิจกรรม android.app แบบง่ายหรือ AppCompatActivity หรือ ActionBarActivity เป็นต้น

  2. ตรวจสอบว่าประเภทกิจกรรมของคุณที่ขยายอยู่ภายใต้หมวดหมู่ที่เข้ากันได้

ตัวอย่างกิจกรรม / Fragment ที่ใช้ android.app เป็นประเภทที่ไม่ใช่ appCompat ในขณะที่ android.support.v4.app.Fragment หรือ android.support.v4.app.ActivityCompat เป็น appCompat ตาม

หากอยู่ภายใต้ appCompat เราใช้ getSupportActionBar () else สำหรับประเภท android.app เราสามารถใช้ getActionBar ()

  1. ตรวจสอบธีมที่ใช้กับกิจกรรมที่เป็นปัญหาในไฟล์รายการ

ตัวอย่าง: ในไฟล์ manifest หากใช้ธีมเป็นพูดว่า android: theme = "@ android: style / Theme.Holo.Dialog" getActionBar () จะทำงาน

แต่หากใช้ธีมสำหรับกิจกรรมในรายการเป็นดังนี้ android: theme = "@ style / Theme.AppCompat.Light" คุณต้องใช้ getSupportActionBar ()


-1

หากคุณมีสร้างแถบเครื่องมือใหม่ให้ใช้ตรวจสอบว่าคุณใช้วิธี setSupportActionBar (); มันจะช่วยคุณได้


-3

ลองทำสิ่งนี้:

                getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                getSupportActionBar().setHomeButtonEnabled(true);
                actionBar = getSupportActionBar();
                actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

แทนสิ่งนี้:

actionBar = getSupportActionBar();
                actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

                getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                getSupportActionBar().setHomeButtonEnabled(true);

ทำไมต้องโทรgetSupportActionBar()ถ้าคุณมีผลลัพธ์เป็นactionBarตัวแปรแล้ว? ทั้งสองสายพันธุ์ไม่ดี
สแตน

คุณเปลี่ยน getSupportActionBar (); ถึง actionBar = getSupportActionBar (); มันเหมือนกัน!!!! ขาสั่น !!!!!
Cabezas

ไม่ได้สร้างความแตกต่างใด ๆ
crubio
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.