2017-12-07 12 views
-1

私はスピナーのsharedpreferancesに問題があります。私は2スピナーを持っています。私は共有優先度でスピナーを保存したいです。私は最初のスピナーを保存することができますが、私は第二のものを保存できません。おかげさまで ありがとうございます。 私はスピナーのsharedpreferancesに問題があります。私は2スピナーを持っています。私は共有優先度で私のスピナーを保存したいです。私は最初のスピナーを保存することができますが、私はsombodyが私に助けてくれます。以下の両方が同じであるSpinnerのSharedPreferances

を:次

final String KEY_SavedSel = "Saved Selection"; 
final String KEY_SavedSe2 = "Saved Selection"; 

変更してよう:

public class MyAndroidAppActivity extends AppCompatActivity { 

    String india[]={"humains","elfes","hobbits"}; 
    String m[]={"PUNE","Mumbai","yoo"}; 
    String b[]={"Arwen","Elrond","Galadriel","Legolas"}; 
    String u[]={"sup","trankill","Conor","Mcgregor","Nate Diaz"}; 

    Spinner s,s1,s2; 
    private Button btnSubmit; 
    SharedPreferences mypref; 
    final String KEY_SavedSel = "Saved Selection"; 
    final String KEY_SavedSe2 = "Saved Selection"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_my_android_app); 
     s=(Spinner)findViewById(R.id.spinner1); 
     s1=(Spinner)findViewById(R.id.spinner2); 
     btnSubmit = (Button) findViewById(R.id.btnSubmit); 



     final ArrayAdapter<String>ia=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,india); 

     final ArrayAdapter<String>ma=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,m); 

     final ArrayAdapter<String>ba=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,b); 

     final ArrayAdapter<String>ua=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,u); 

     ia.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     s.setAdapter(ia); 
     mypref = getPreferences(MODE_PRIVATE); 
     int prefsInt = mypref.getInt(KEY_SavedSel, -1); 
     int prefsInt1 = mypref.getInt(KEY_SavedSe2,-1); 
     if(prefsInt != -1){ 
      s.setSelection(prefsInt); 

     } 

     if(prefsInt1 != -1){ 
      s1.setSelection(prefsInt1); 
     } 



     s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

       switch (parent.getId()){ 
        case R.id.spinner1:{ 
         SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); 
         editor.putInt(KEY_SavedSel, position); 
         editor.putInt(KEY_SavedSe2, position); 
         editor.commit(); 
         if(india[position].equals("humains")){ 
          ma.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
          s1.setAdapter(ma); 


         } 
         if(india[position].equals("elfes")){ 

          ba.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
          s1.setAdapter(ba); 


         } 
         if(india[position].equals("hobbits")){ 

          ua.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
          s1.setAdapter(ua); 


         } 

        } 


       } 

      } 


      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 

     }); 

     btnSubmit.setOnClickListener(new OnClickListener() { 

      @Override 

      public void onClick(View v) { 

       Toast.makeText(MyAndroidAppActivity.this, 

         "Resultat : " + 

           "\nSpinner 1 : "+ String.valueOf(s.getSelectedItem()) + 

           "\nSpinner 2 : "+ String.valueOf(s1.getSelectedItem()), 

         Toast.LENGTH_SHORT).show(); 

      } 


     }); 



    } 

} 
+0

更新された回答を確認しましたか? –

+0

はいそれは動作しません – momo

答えて

1

SharedPreferencesキーが、そうでなければ第2のスピナーは、最初のスピナー

などから保存された値を上書きします異なっている必要があります。

final String KEY_SavedSel = "Saved Selection"; 
final String KEY_SavedSe2 = "Saved Selection2"; 

、その後、あなたは以下のようにそれを使用することができ、あなたのコードの後の値を取得

s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

      SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); 
      editor.putInt(KEY_SavedSel, position); 
      editor.commit(); 

      if (india[position].equals("humains")) { 
       ma.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       s1.setAdapter(ma); 


      } 
      if (india[position].equals("elfes")) { 

       ba.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       s1.setAdapter(ba); 


      } 
      if (india[position].equals("hobbits")) { 

       ua.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       s1.setAdapter(ua); 

      } 

      s1.setSelection(mypref.getInt(KEY_SavedSe2, -1)); 


     } 

     @Override 
     public void onNothingSelected(final AdapterView<?> adapterView) { 

     } 


    }); 

    s1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

      SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); 
      editor.putInt(KEY_SavedSe2, position); 
      editor.commit(); 

      if (b[position].equals("Arwen")) { 
       // TODO: Do something 

      } 
      if (b[position].equals("Elrond")) { 
       // TODO: Do something 


      } 
      if (b[position].equals("Galadriel")) { 
       // TODO: Do something 

      } 
      if (b[position].equals("Legolas")) { 
       // TODO: Do something 

      } 




     } 

     @Override 
     public void onNothingSelected(final AdapterView<?> adapterView) { 

     } 


    }); 

} 

そしてまた、あなたは、次の行をあなたの内側の

s1.setSelection(mypref.getInt(KEY_SavedSe2, -1));

を追加する必要がありますs.setOnItemSelectedListenerが表示されているため、アプリが再起動するたびにs.setOnItemSelectedListenerが呼び出されていて、選択した2番目のスピナーを設定していないためですそれらを適切に追加して、それがあなたの最初の問題を修正することを追加します。

+0

これは、あなたが言った – momo

+0

@momoそれを取得しようとするとSharedPreferencesから出てくる値は何ですか? –

+0

もしあなたが最初のスピナーで幹部を選んだら、それに依存するつもりです。2番目のスピナーは、PUNE "、" Mumbai "、" yoo " "Elrond"、 "Galadriel"、 "Legolas" – momo

0

次の2つの異なる鍵を取らなければならない

final String KEY_SavedSel = "Saved Selection1"; 
final String KEY_SavedSe2 = "Saved Selection2"; 

を、アダプタを設定しながら、あなたは持っていますspinner2の項目選択とはみなされません。あなたはスピナー2にも価値を置く必要があります。次のケースも追加してください。

 case R.id.spinner2:{ 
        SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); 
        // editor.putInt(KEY_SavedSel, position); 

       // your remaining code. 

        editor.putInt(KEY_SavedSe2, position); 
        editor.commit(); 
        } 
+0

私はそれが動作するかどうか教えてください? –

+0

あなたの答えに感謝しますが、それは動作しません – momo

+0

いいえ私はあなたが言ったことはまだ最初のスピナーが動作しますが、2番目のものはありません – momo