2012-06-19 76 views
0

我有一個包含2個選項卡活動的應用程序,並且我試圖通過使用此代碼在第二個選項卡上獲得SharedPreferences:
SharedPreferences prefs = this.getSharedPreferences("com.some.app", Context.MODE_PRIVATE);
但它使應用程序強制關閉,我在第一個活動中使用了相同的代碼,它得到了SharedPreferences就好!任何想法是什麼造成這個?SharedPreferences導致應用程序在android中使用Tabs時強制關閉

的logcat:

06-19 17:10:37.690: W/dalvikvm(6589): threadid=1: thread exiting with uncaught exception (group=0x40a031f8) 
06-19 17:10:37.706: E/AndroidRuntime(6589): FATAL EXCEPTION: main 
06-19 17:10:37.706: E/AndroidRuntime(6589): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.something.some/com.something.somehow}: java.lang.NullPointerException 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:1797) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:682) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.widget.TabHost.setCurrentTab(TabHost.java:346) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:150) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:540) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.view.View.performClick(View.java:3511) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.view.View$PerformClick.run(View.java:14105) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.os.Handler.handleCallback(Handler.java:605) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.os.Handler.dispatchMessage(Handler.java:92) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.os.Looper.loop(Looper.java:137) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at java.lang.reflect.Method.invoke(Method.java:511) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at dalvik.system.NativeStart.main(Native Method) 
06-19 17:10:37.706: E/AndroidRuntime(6589): Caused by: java.lang.NullPointerException 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at com.someone.someapp.Statify.onCreate(Statify.java:59) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.app.Activity.performCreate(Activity.java:4465) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
06-19 17:10:37.706: E/AndroidRuntime(6589):  ... 18 more 
+0

請發佈stacktrace ... – Jug6ernaut

+0

我發佈了我的LogCat,如果這就是你的意思。 –

回答

1

接頭主機房單獨activites(如果林不誤),所以,當你調用「這個」它返回的標籤活動的背景下,爲什麼空我不知道(我我假設這是null,因爲idk在59行)。

我的建議是使用一個共享偏好例如,從您的主要活動,而不是啓動一個共享偏好變量對每個子活動的(儘管他們會指向同一個首選項)

或者更好的使用ViewPager而不是過時的Tab主機。

如果你想堅持自己在做什麼嘗試this.getBaseContext()。getSharedPreferences()

更多的上下文信息將允許一個更好的答案,你smippit是正確的。

+0

謝謝!使用getBaseContext()工作完美:) –

相關問題