Tôi đang xây dựng ứng dụng cho tab.Hộp thoại hoạt động với tab
- Khi được nhấp nút của tôi đang cố gắng để hiển thị hoạt động (chẳng hạn Một) với chủ đề
@android:style/Theme.Dialog
- Bên trong hoạt động Một tôi đang tạo ra actionbar và thêm 4 tab.
- Khi nhấp vào tab Tôi muốn thay đổi phân đoạn.
Tất cả mọi thứ hoạt động tốt cho đến khi tôi không áp dụng theme @android:style/Theme.Dialog
Sau khi áp dụng chủ đề Tôi nhận được ngoại lệ:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ebuilder/com.ebuilder.views.MyTabActivity}: java.lang.NullPointerException
tại dòng sau:
actionBar.addTab(actionBar.newTab().setCustomView(R.layout.tab_home).
setTabListener(homeListener), 0);
Tôi có hai câu hỏi:
1. Điều gì sẽ xảy ra nếu tôi áp dụng chúng hộp thoại e?
2. Cách tiếp cận của tôi có đúng không?
Hãy cho tôi biết nếu có ai biết cách tiếp cận khác.
Edit1: * Manifest tập tin *
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.vivek"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:targetSdkVersion="14"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".FragmentInsideFragmentTestActivity"
android:label="@string/app_name"
android:theme="@style/Theme.CustomDialog" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
res/values / style.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.CustomDialog" parent="android:style/Theme.Dialog">
<item name="android:windowNoTitle">false</item>
<item name="android:windowActionBar">true</item>
</style>
</resources>
Edit2
05-03 21:42:10.580: D/AndroidRuntime(533): Shutting down VM
05-03 21:42:10.580: W/dalvikvm(533): threadid=1: thread exiting with uncaught exception (group=0x40014760)
05-03 21:42:10.600: E/AndroidRuntime(533): FATAL EXCEPTION: main
05-03 21:42:10.600: E/AndroidRuntime(533): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vivek/com.vivek.FragmentInsideFragmentTestActivity}: java.lang.IllegalStateException: ActionBarImpl can only be used with a compatible window decor layout
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1748)
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764)
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.ActivityThread.access$1500(ActivityThread.java:122)
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002)
05-03 21:42:10.600: E/AndroidRuntime(533): at android.os.Handler.dispatchMessage(Handler.java:99)
05-03 21:42:10.600: E/AndroidRuntime(533): at android.os.Looper.loop(Looper.java:132)
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.ActivityThread.main(ActivityThread.java:4025)
05-03 21:42:10.600: E/AndroidRuntime(533): at java.lang.reflect.Method.invokeNative(Native Method)
05-03 21:42:10.600: E/AndroidRuntime(533): at java.lang.reflect.Method.invoke(Method.java:491)
05-03 21:42:10.600: E/AndroidRuntime(533): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
05-03 21:42:10.600: E/AndroidRuntime(533): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
05-03 21:42:10.600: E/AndroidRuntime(533): at dalvik.system.NativeStart.main(Native Method)
05-03 21:42:10.600: E/AndroidRuntime(533): Caused by: java.lang.IllegalStateException: ActionBarImpl can only be used with a compatible window decor layout
05-03 21:42:10.600: E/AndroidRuntime(533): at com.android.internal.app.ActionBarImpl.init(ActionBarImpl.java:214)
05-03 21:42:10.600: E/AndroidRuntime(533): at com.android.internal.app.ActionBarImpl.<init>(ActionBarImpl.java:192)
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.Activity.initActionBar(Activity.java:1767)
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.Activity.setContentView(Activity.java:1781)
05-03 21:42:10.600: E/AndroidRuntime(533): at com.vivek.FragmentInsideFragmentTestActivity.onCreate(FragmentInsideFragmentTestActivity.java:47)
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712)
05-03 21:42:10.600: E/AndroidRuntime(533): ... 11 more
Tôi khuyên bạn nên tạo tab trong các vết cắn thay vì thực hiện nó trong một đoạn lớn. Sau đó, bạn có thể xác định exacly những gì cung cấp cho nullpointer. Nullpointer nên khá đơn giản để giải quyết. – Warpzit
không thực sự actionBar chính nó là null nếu tôi áp dụng chủ đề 'Theme.Dialog' do đó là ngoại lệ. – Vivek
Đoán của tôi (đoán của nó) là chủ đề của hộp thoại không có tiêu đề và vì thanh tác vụ nằm sâu xuống là thanh tiêu đề, điều này có nghĩa là không có thanh tác vụ nào do đó không có. Có thể sử dụng một chủ đề khác không? – Warpzit