2つのステージ0または1を保持するitems配列があります。それらはすべて0を初期化しました。私のアクティビティの1つで、いくつかのアイテムのステージ0を1に変更しました。これらのステージを保存して、アプリを再起動したときに取得しようとしています。
これが私がステージを変える私の活動です:
public class LogoActivity extends Activity{
static SharedPreferences data;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logo);
...
if(a==true){
ImageAdapter.items[LogoSelectionActivity.pos] = 1;
SharedPreferences.Editor ed = data.edit();
ed.putInt(Integer.toString(LogoSelectionActivity.pos), 1);
ed.commit();
}
...
}
設定から保存されたデータを取得するアクティビティは次のとおりです。
public class LogoSelectionActivity extends Activity {
static int pos;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
for(int i=0;i<5;i++){
ImageAdapter.items[i] = LogoActivity.data.getInt(Integer.toString(i), 0);
}
setContentView(R.layout.activity_list_logos);
...
}
私が書いた最初のアクティビティは、2番目のアクティビティの前に始まることに注意してください。エラーは次のとおりです。
03-07 20:51:52.295: E/AndroidRuntime(25452): FATAL EXCEPTION: main
03-07 20:51:52.295: E/AndroidRuntime(25452): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.turkishlogoquiz/com.example.turkishlogoquiz.LogoSelectionActivity}: java.lang.NullPointerException
03-07 20:51:52.295: E/AndroidRuntime(25452): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
03-07 20:51:52.295: E/AndroidRuntime(25452): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
03-07 20:51:52.295: E/AndroidRuntime(25452): at android.app.ActivityThread.access$600(ActivityThread.java:140)
03-07 20:51:52.295: E/AndroidRuntime(25452): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
03-07 20:51:52.295: E/AndroidRuntime(25452): at android.os.Handler.dispatchMessage(Handler.java:99)
03-07 20:51:52.295: E/AndroidRuntime(25452): at android.os.Looper.loop(Looper.java:137)
03-07 20:51:52.295: E/AndroidRuntime(25452): at android.app.ActivityThread.main(ActivityThread.java:4898)
03-07 20:51:52.295: E/AndroidRuntime(25452): at java.lang.reflect.Method.invokeNative(Native Method)
03-07 20:51:52.295: E/AndroidRuntime(25452): at java.lang.reflect.Method.invoke(Method.java:511)
03-07 20:51:52.295: E/AndroidRuntime(25452): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
03-07 20:51:52.295: E/AndroidRuntime(25452): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
03-07 20:51:52.295: E/AndroidRuntime(25452): at dalvik.system.NativeStart.main(Native Method)
03-07 20:51:52.295: E/AndroidRuntime(25452): Caused by: java.lang.NullPointerException
03-07 20:51:52.295: E/AndroidRuntime(25452): at com.example.turkishlogoquiz.LogoSelectionActivity.onCreate(LogoSelectionActivity.java:32)
03-07 20:51:52.295: E/AndroidRuntime(25452): at android.app.Activity.performCreate(Activity.java:5206)
03-07 20:51:52.295: E/AndroidRuntime(25452): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
03-07 20:51:52.295: E/AndroidRuntime(25452): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
他の行を除外してコードを短縮します。理解していただければ幸いです。intをstringに変更して、キーの配列内の位置番号を使用していることに注意してください。