2017-09-25 12 views
0

私のアプリに「お気に入りを追加」ボタンを作ろうとしています。 sharedpreferencesで値を送信して取得することはできますが、アプリを再起動するとお気に入りはもう一度空になります。私はオーバーライドOnPauseメソッドが必要だと思うが、私は適切に適用できませんでした。私は助けが必要です、事前に感謝します。アプリの再起動時に共有予定がデータを保存しない

RADIOフラグメント

public static int incrementedValue = 0; 

add_favorites_button= (Button) view.findViewById(R.id.add_favorites_button); 
     add_favorites_button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       SharedPreferences settings = getActivity().getSharedPreferences("PREFS", 0); 
       SharedPreferences.Editor editor = settings.edit(); 

       editor.putString("radio_link"+ incrementedValue, radio_play_link); 
       editor.putString("radio_name" + incrementedValue, radio_name); 
       editor.putString("listener_number" + incrementedValue, listener_number); 
       //editor.clear(); 
       editor.commit(); 

       incrementedValue++; 
      } 

     }); 

お気に入りFRAGMENT

final List<String> radio_name_list = new ArrayList<>(); 
     final List<String> radio_link_list = new ArrayList<>(); 
     final List<String> listener_numbers = new ArrayList<>(); 


     for (int i=0; i<PlayRadioFragment.incrementedValue; i++) { 
      SharedPreferences settings = getActivity().getSharedPreferences("PREFS",0); 
      radio_name_list.add(settings.getString("radio_name" +i, "")); 
      radio_link_list.add(settings.getString("radio_link" +i, "")); 
      listener_numbers.add(settings.getString("listener_number" +i, "")); 
     } 

をプレイ

... その後、私はリストビュー でそれらを表示...

+0

アプリの再起動時に何をしていますか? –

+0

あなたが何を意味するのか分かりませんでした。まもなく、私は言おうとしています。私がアプリを閉じると、お気に入りはなくなります。 – PinkRabbits

+0

この変数は何をしていますか?どのようにこれを初期化していますか? incrementedValue –

答えて

1
for (int i=0; i<PlayRadioFragment.incrementedValue; i++) 

アプリケーション(またはフラグメント)を再起動した後で、このincrementedValueは初期化されたもの(おそらく0)に戻りますので、SharedPreferences(forループをまったく入力しない)から何もロードしません。

あなたは

incrementedValue = radio_name_list.size(); 
+0

あなたは素晴らしいです!本当にありがとう、それは働いた。しかし、今度は、私がアプリケーションを再起動したときに、新しいお気に入りのラジオを追加したい場合は、リストビューの最初の項目を上書きしています:( – PinkRabbits

+0

@PinkRabbits私は自分の質問を編集しました、あなたはincrementedValueをリストのサイズ – FWeigl

+0

2回ありがとう、実際にはとてもシンプルで、今は正常に動作しています。 – PinkRabbits

0

これがあるようなお気に入りをロードした後incrementedValueを設定する必要がありますので、あなたはおそらくも、アプリの再起動後、古いお気に入りを上書きしないようにしたい

for (int i=0; i<Integer.MAX_VALUE; i++) { 

    String s = settings.getString("radio_name" +i, "") 

    if (TextUtils.isEmpty(s)) 
     break; 
    } else { 
     radio_name_list.add(s); 
    } 

のようなものを試してみてくださいアプリを再起動するとincrementedValueという名前の変数が0として再び値を取得し、forループの条件文が完全に満たされないため、ループが期待通りに実行されないためです。この問題を解決するには、incrementedValueの値を共有プリファレンスで保存する必要があるもう1つのことを行うことができます。forループテストステートメントは、共有プリファレンスから更新された値を取得します。あなたに役立つことを願って

+0

これは正しい答えです。本当にありがとうございます。 – PinkRabbits

+0

私の答えがあなたを助けたら受け入れてください –

関連する問題