やりたいこと
まずは1つのデータだけ、ListViewに読み込んだテキストを表示したい。
現状
デバッグをして、updateIntは1、updateStringには"nothing"が入っていることが確認できた。
実際に実行しても、ListViewに"nothing"と表示されてしまう。
エラーは特に出ていない。
知りたいこと
なぜ、"nothing"が出てしまうのかヒント、解決策を知りたいです。
TITLEの列挙子の取得がMaainActivityからうまくできていないのでしょうか?
MainActivity
1public class MainActivity extends AppCompatActivity { 2 private ArrayList data = new ArrayList<String>(); 3 private static final int REQUEST_CODE = 1; 4 private ArrayAdapter adapter; 5 6 @Override 7 protected void onActivityResult(int request_Code, int resultCode, Intent result){ 8 switch(request_Code){ 9 //MakeQuizActivityから戻ってきた場合 10 case(REQUEST_CODE): 11 //クイズを作るボタンを押して戻ってきたときの処理 12 if(resultCode == RESULT_OK){ 13 data.add(result.getStringExtra("INPUT_TITLE")); 14 adapter.notifyDataSetChanged(); 15 } 16 //押されなかったときの処理 17 else if(resultCode == RESULT_CANCELED){ 18 19 } 20 break; 21 } 22 } 23 protected void onCreate(Bundle savedInstanceState) { 24 super.onCreate(savedInstanceState); 25 setContentView(R.layout.activity_main); 26 27 // リスト項目とListViewを対応付けるArrayAdapterを用意する 28 adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data); 29 // ListViewにArrayAdapterを設定する 30 ListView listView = (ListView) findViewById(R.id.listView); 31 listView.setAdapter(adapter); 32 Button button = (Button) findViewById(R.id.makeQuiz_Button1); 33 button.setOnClickListener(new View.OnClickListener() { 34 @Override 35 public void onClick(View v) { 36 Intent intent = new Intent(MainActivity.this, com.test.quizmaker.MakeQuizActivity.class); 37 startActivityForResult(intent, REQUEST_CODE); 38 } 39 }); 40 Button button1 = (Button)findViewById(R.id.update_Button); 41 button1.setOnClickListener(new View.OnClickListener() { 42 @Override 43 public void onClick(View v) { 44 //現時点のコード 45 int updateInt = PreferenceManager.sp.getInt("count",10); 46 ArrayList updateString = new ArrayList<String>(); 47 updateString.add(PreferenceManager.sp.getString(PreferenceManager.DataKeys.TITLE.getValue() + String.valueOf(updateInt),"nothing")); 48 data.add(updateString); 49 adapter.notifyDataSetChanged(); 50 System.out.println(updateString); 51 } 52 }); 53 } 54 //オプションメニューを作成 55 public boolean onCreateOptionsMenu(Menu menu){ 56 //menuにcustom_menuレイアウトを適用 57 getMenuInflater().inflate(R.menu.custom_menu, menu); 58 //オプションメニューを表示する場合はtrue 59 return true; 60 } 61 //メニュー選択時の処理 トースト表示 62 @Override 63 public boolean onOptionsItemSelected(MenuItem menuItem){ 64 //押されたメニューのIDで処理を振り分ける 65 //if(menuItem.getItemId() == R.id.menuClear){ 66 switch (menuItem.getItemId()) { 67 case R.id.menuSelect: 68 69 case R.id.menuClear: 70 adapter.clear(); 71 adapter.notifyDataSetChanged(); 72 PreferenceManager.clear(); 73 break; 74 } 75 return true; 76 } 77} 78
MakeQuizActivity
1public class MakeQuizActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_make_quiz); 7 8 Button button2 = (Button)findViewById(R.id.makeQuiz_Button2); 9 button2.setOnClickListener(new View.OnClickListener() { 10 @Override 11 public void onClick(View v) { 12 Intent intent = new Intent(MakeQuizActivity.this,com.test.quizmaker.MainActivity.class); 13 PreferenceManager pm = new PreferenceManager(); 14 SharedPreferences sp = getSharedPreferences("DataStore",MODE_PRIVATE); 15 SharedPreferences.Editor editor = sp.edit(); 16 pm.init(sp,editor); 17 String strTitle = ((EditText)findViewById(R.id.editText)).getText().toString(); 18 String strQuiz = ((EditText)findViewById(R.id.editText2)).getText().toString(); 19 String strAnswer = ((EditText)findViewById(R.id.editText3)).getText().toString(); 20 int count = 1; 21 pm.saveInt(count); 22 count ++; 23 pm.saveString(strTitle, PreferenceManager.DataKeys.TITLE, String.valueOf(count)); 24 pm.saveString(strQuiz, PreferenceManager.DataKeys.QUIZ, String.valueOf(count)); 25 pm.saveString(strAnswer, PreferenceManager.DataKeys.ANSWER, String.valueOf(count)); 26 //下3行必要なさそう 27 String title = sp.getString(PreferenceManager.DataKeys.TITLE.getValue() + String.valueOf(count), "Nothing"); 28 String quiz = sp.getString(PreferenceManager.DataKeys.QUIZ.getValue() + String.valueOf(count),"Nothing"); 29 String answer = sp.getString(PreferenceManager.DataKeys.ANSWER.getValue() + String.valueOf(count),"Nothing"); 30 intent.putExtra("INPUT_TITLE", title); 31 intent.putExtra("INPUT_QUIZ",quiz); 32 intent.putExtra("INPUT_ANSWER",answer); 33 setResult(RESULT_OK, intent); 34 finish(); 35 } 36 }); 37 } 38}
PreferenceManager
1public class PreferenceManager { 2 3 public static SharedPreferences sp; 4 private static SharedPreferences.Editor spEditor; 5 6 public enum DataKeys { 7 TITLE("title"), QUIZ("quiz"), ANSWER("answer"); 8 9 private String value; 10 11 private DataKeys(String value) { 12 this.value = value; 13 } 14 15 public String getValue() { 16 return this.value; 17 } 18 } 19 20 public void init(SharedPreferences sp, SharedPreferences.Editor editor) { 21 this.sp = sp; 22 this.spEditor = editor; 23 } 24 25 public void saveString(String s, DataKeys key, String c) { 26 spEditor.putString(key.getValue() + c, s); 27 spEditor.apply(); 28 } 29 30 public void saveInt(int c) { 31 spEditor.putInt("count", c); 32 spEditor.apply(); 33 } 34 35 public static void clear(){ 36 spEditor.clear().commit(); 37 } 38} 39
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。