私はAndroid用のプログラミングを始めています。SharedPreferencesの読み書きコード(各アクティビティ)を別のクラスに分けようとするまでは、 ConfigManager。 I /書き込みの好みを読み取るために、このクラスをインスタンス化しようとすると、私はエラーとアプリケーションが終了を受け、今独立したクラスのAndroidとSharedPreferences
package com.application.testing;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
public class ConfigManager extends Activity {
public boolean boolPref;
public String stringPref;
private SharedPreferences prefs;
public ConfigManager() {
prefs = getSharedPreferences(
getResources().getString(R.string.preferences),
Context.MODE_PRIVATE);
loadCfg();
}
public void saveCfg() {
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("boolPreference", boolPref);
editor.putString("stringPreference", stringPref);
editor.commit();
}
public void loadCfg() {
this.boolPref = prefs.getBoolean("boolPreference", false);
this.stringPref = prefs.getString("stringPreference", "");
}
}
:
は、ここに私のCONFIGMANAGERクラスです。
スプラッシュスクリーンは、ユーザーが表示しないことを選択した場合、プリファレンスに保持し、アプリケーションの開始時にtrueまたはfalseの場合はスプラッシュスクリーンを表示するか、次のアクティビティに移動します。
これは、スプラッシュスクリーンクラスのコードのようになります。
package com.application.testing;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class SplashScreen extends Activity {
public ConfigManager cfg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
cfg = new ConfigManager();
if (!(cfg.boolPref)) {
Intent i = new Intent("com.application.testing.NEXTACTIVITY");
startActivity(i);
} else {
setContentView(R.layout.splash);
Thread timer = new Thread() {
public void run() {
try {
sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
Intent i = new Intent("com.application.testing.NEXTACTIVITY");
startActivity(i);
}
}
};
timer.start();
}
}
@Override
protected void onPause() {
super.onPause();
cfg.saveCfg(); // not neccesary, no preference changes during splashscreen execution
finish();
}
}
最後に、これはLogcat出力です:私のエラーがどこにある
12-21 23:46:48.294: D/AndroidRuntime(1381): Shutting down VM
12-21 23:46:48.344: W/dalvikvm(1381): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
12-21 23:46:48.375: E/AndroidRuntime(1381): FATAL EXCEPTION: main
12-21 23:46:48.375: E/AndroidRuntime(1381): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.application.testing/com.application.testing.SplashScreen}: java.lang.NullPointerException
12-21 23:46:48.375: E/AndroidRuntime(1381): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
12-21 23:46:48.375: E/AndroidRuntime(1381): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
12-21 23:46:48.375: E/AndroidRuntime(1381): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
12-21 23:46:48.375: E/AndroidRuntime(1381): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
12-21 23:46:48.375: E/AndroidRuntime(1381): at android.os.Handler.dispatchMessage(Handler.java:99)
12-21 23:46:48.375: E/AndroidRuntime(1381): at android.os.Looper.loop(Looper.java:123)
12-21 23:46:48.375: E/AndroidRuntime(1381): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-21 23:46:48.375: E/AndroidRuntime(1381): at java.lang.reflect.Method.invokeNative(Native Method)
12-21 23:46:48.375: E/AndroidRuntime(1381): at java.lang.reflect.Method.invoke(Method.java:521)
12-21 23:46:48.375: E/AndroidRuntime(1381): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-21 23:46:48.375: E/AndroidRuntime(1381): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-21 23:46:48.375: E/AndroidRuntime(1381): at dalvik.system.NativeStart.main(Native Method)
12-21 23:46:48.375: E/AndroidRuntime(1381): Caused by: java.lang.NullPointerException
12-21 23:46:48.375: E/AndroidRuntime(1381): at android.content.ContextWrapper.getResources(ContextWrapper.java:80)
12-21 23:46:48.375: E/AndroidRuntime(1381): at com.application.testing.ConfigManager.<init>(ConfigManager.java:22)
12-21 23:46:48.375: E/AndroidRuntime(1381): at com.application.testing.SplashScreen.onCreate(SplashScreen.java:22)
12-21 23:46:48.375: E/AndroidRuntime(1381): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-21 23:46:48.375: E/AndroidRuntime(1381): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
12-21 23:46:48.375: E/AndroidRuntime(1381): ... 11 more
誰でも知っていますか?
事前のおかげでたくさんのことは、私がおかしくなりそうだので:)
のStackOverflowへようこそ。タイトルに解決されたような質問を記す必要はありません。質問に残された「アイコン/ボックス」は、回答を受け取った後は緑色に変わり、答えを受け入れるとフォントは黄色に変わります。とにかく誰も質問のステータスを見ることができます。 :) –