2016-08-05 4 views
0

私が持っているのは、スピナーで言語を選択する設定アクティビティです。たとえば、ロシア語に変更すると言語が変わりますが、設定メニューを再度開くと、スピナーの選択項目が最初の項目(英語)であり、現在の項目(ロシア語)ではありません。リフレッシュ後、以前に選択したアイテムをスピナーで表示するにはどうすればいいですか?

これは

Resources res = getResources(); 
language = res.getStringArray(R.array.languages_arrays); 
Spinner spinner = (Spinner) findViewById(R.id.toolbar_spinner); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
      this, R.layout.spinner_item_dropdown, 
      language); 

spinner.setAdapter(adapter); 

は、私が選択した言語を示すために、スピナーに変更する必要があります私のスピナーのですか?そのために

+0

は、任意のフラグデータを維持するか、またはsharedpreferenceにデータを保存します。 – prakash

+0

@prakash私はそれをどうすればよいかわからない。私は何かを試しましたが、実際にはうまくいきませんでした –

+0

あなたは選択した言語をどこに保存しましたか? – Piyush

答えて

0

スピナーの前の選択項目を設定する場合は、選択した項目を保存してから選択項目を設定する必要があります。 ここでは前回選択した項目を取得してから、アダプタ

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
String language = preferences.getString("language", ""); 
     if(!language.equalsIgnoreCase("")) 
     { 
      int spinnerPosition = arrayAdapter.getPosition(language); 
      spinner.setSelection(spinnerPosition); 

     } 

あなたは以下のようにデータを格納することができます

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

SharedPreferences.Editor editor = preferences.edit(); 
editor.putString("language",spinner.getSelectedItem().toString();); 
editor.apply(); 



     } 


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

     } 
    }); 
+0

これは私が必要としていたものです。ありがとうございました。 –

0

uはプログラム的

for (int i=0 ;i<languages.length;i++) 
       { 
        if(languages[i] = "RUSSIAN")//change it according to ur prrefence 
        spinner.setSelection(i); 
       } 
+0

あなたの答えをありがとうが、それはうまくいかなかった。 –

+0

私は正確に何をしたいのかを知りません – Anil

0

アプリのどこかで以前選択した値を保存する必要がスピナー値を設定する必要があります。設定をもう一度開いたら、その値をチェックして配列の位置を見つけます。その場所を見つけたら、Spinnerの選択を以下のようにその位置に設定します。

spinner.setSelection(position_of_selected_item);

関連する問題