kotlin学習中の者です。現在SharedPreferencesとListViewの学習の為に、SharedPreferencesにて保存したデータをListViewに表示する実装を行っています。
保存に関してはtextEditに入力した文字を保存していくのですが、ここで理解できていないのがデータはkeyを用いて保存されていくと認識してきますが、保存するたびにkeyを変更しないとデータは上書きされてしまいますか?
別のfragment(ListView表示する画面)ではadapterにaという変数に保存した時のkeyを渡してあげたのですが、おそらく配列ではないのでエラーが発生しています。以下に保存fragmentと表示fragmentを載せましたのでどなたかご教授いただけませんでしょうか?宜しくおねがいします。
kotlin
1class InspectionDataSavedFragment: Fragment() { 2 3 4 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { 5 super.onCreateView(inflater, container, savedInstanceState) 6 7 8 9 return inflater.inflate(R.layout.fragment_inspection_data_saved, container, false) 10 } 11 12 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 13 super.onViewCreated(view, savedInstanceState) 14 15 val pref = context!!.getSharedPreferences("file_name", Context.MODE_PRIVATE) 16 resultView.text = pref.getString("key", "未登録") 17 18 savedButton.setOnClickListener { 19 20 val a = editText.text.toString() 21 22 //保存処理を入れる 23 pref.edit().putString("key", a).apply() 24 25 Toast.makeText(context, "保存しました", Toast.LENGTH_SHORT).show() 26 27 } 28 } 29 30}
kotlin
1class InspectionListFragment: Fragment() { 2 3 4 5 6 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { 7 super.onCreateView(inflater, container, savedInstanceState) 8 9 return inflater.inflate(R.layout.fragment_inspection_list, container, false) 10 } 11 12 13 14 15 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 16 super.onViewCreated(view, savedInstanceState) 17 18 19 20 //適当なデータ配列を表示してみる 21 val dataArray = arrayOf("kotlin", "android", "swift", "ios") 22 23 val pref = context!!.getSharedPreferences("file_name", Context.MODE_PRIVATE) 24 val a = pref.getString("key", "ng") 25 26 //adapterを作成 27 val myadapter = ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, a) 28 29 //adapterを追加 30 listView.adapter = myadapter 31 32 //選択時の処理 33 listView.setOnItemClickListener { parent, view, position, id -> 34 Toast.makeText(context, "test", Toast.LENGTH_SHORT).show() 35 36 //タップしたら詳細画面へ画面遷移 37 val inspectionDetailFragment = InspectionDetailFragment() 38 39 40 41 //fragmentからfragmentへの画面遷移は少し違いがあるので注意すること 42 val transaction = fragmentManager!!.beginTransaction() 43 transaction.replace(R.id.container, inspectionDetailFragment) 44 45 //戻る機能を追加したい場合はこの行を追加すること 46 transaction.addToBackStack(null) 47 transaction.commit() 48 49 //val intent = Intent(context, InspectionDetailFragment::class.java) 50 //startActivity(intent) 51 52 } 53 54 55 } 56 57 58 59}
回答1件
あなたの回答
tips
プレビュー