Tôi có một mô-đun mã triển khai viewpager với ngăn điều hướng, tuy nhiên, khi tôi chạy mã, tôi gặp lỗi sau
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)
chỉ vào dòng này
// enabling action bar app icon and behaving it as a toggle button
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
toàn bộ mã http://pastebin.com/u1K72fr7
Tệp kê khai của tôi
<?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"
mã http://pastebin.com/EFQLzRej
================================================== ================ CHỈNH SỬA / CẬP NHẬT:
Tôi học được gì từ điều này
Bất cứ khi nào một lỗi như vậy xảy ra
1. Kiểm tra xem loại Hoạt động nào đang được sử dụng, đó là Hoạt động android.app đơn giản hay AppCompatActivity hay ActionBarActivity, v.v.
2. Kiểm tra xem loại hoạt động được mở rộng của bạn có thuộc danh mục compat không
ví dụ: Activity / Fragment dựa trên android.app không phải là loại appCompat, trong khi android.support.v4.app.Fragment hoặc android.support.v4.app.ActivityCompat dựa trên appCompat
nếu nó thuộc appCompat, chúng ta sử dụng getSupportActionBar (). Còn đối với các loại android.app, chúng ta có thể sử dụng getActionBar ()
3. Kiểm tra chủ đề được áp dụng cho hoạt động được đề cập trong tệp kê khai
ví dụ: Trong tệp kê khai nếu chủ đề được áp dụng là android: theme = "@ android: style / Theme.Holo.Dialog" getActionBar () sẽ hoạt động
nhưng nếu chủ đề được áp dụng cho hoạt động trong tệp kê khai như sau android: theme = "@ style / Theme.AppCompat.Light" thì bạn phải sử dụng getSupportActionBar ()
supportActionBar(không phải null) với chủ đề của bạn. Bạn đã thay thế tất cả getActionBarbằng getSupportActionBar? Còn 1 điều nữa, bạn nên cập nhật nhật ký lỗi mới của mình.
getActionBar()trong MainActivity... Hãy kiểm tra nó và thay đổi thành getSupportActionBar.
getSupportActionbar()?