SharedPreferencesで保存、読み込み処理のプログラムを実機でテストしていた所、一度保存した値をgetInt()等で読み込むと、NullPointerExceptionが発生します。
結果例外処理のcatchに書いてある通りNotFoundとボタンにテキストがセットされます。
lang
1//保存処理 2SharedPreferences pref1; 3pref1 = getSharedPreferences("save1", MODE_PRIVATE); 4 Editor s1 = pref1.edit(); 5 s1.putString("現在時刻", date1); 6 s1.commit(); 7 8//読み込み処理 9 10 SharedPreferences pref1 = getSharedPreferences("save1", MODE_PRIVATE); 11 date1 = pref1.getString("現在時刻", date1);
以下のコードはダイアログを開いて読み込み処理をしており、値が保存されている場合に保存時刻をButtonにセットしています。最初にbuilder = nullを行っているのは、二度ダイアログを同じ場所に開くと違う例外が発せしてしまうため、ダイアログにnullを代入しています。
lang
1public void load(View view){ 2 builder = null; 3 builder2 = null; 4 LayoutInflater inflater = (LayoutInflater)this. 5 getSystemService(LAYOUT_INFLATER_SERVICE); 6 final View layout2 = inflater.inflate( 7 R.layout.load, (ViewGroup)findViewById(R.id.load_layout)); 8 builder2 = new AlertDialog.Builder(this); 9 builder2.setTitle("ロード"); 10 builder2.setView(layout2); 11 12 Button loadbutton1 = (Button) layout2.findViewById(R.id.loadbutton1); 13 try{ 14 loadbutton1.setText(pref1.getString("現在時刻", date1)); 15 }catch(NotFoundException e){ 16 loadbutton1.setText("NotFound"); 17 }catch(NullPointerException e){ 18 loadbutton1.setText("NotFound"); 19 } 20 builder2.create(); 21 builder2.show(); 22 }
NotFoundと表示されるのですが実際には読み込み処理を何度も行えることからファイルは存在するのでボタンには保存時刻が表示されて欲しいのですが。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/01/13 07:58