Я пытаюсь получить счетчик, чтобы реагировать на ввод пользователя, однако, когда я нажимаю на один из элементов, ничего не происходит. Я не получаю никаких ошибок в среде IDE или во время выполнения, поэтому я понятия не имею, что я сделал неправильно. Может ли кто-нибудь помочь?Spinner не реагирует на пользователя
public class settings extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
String selected;
int themeno;
String [] themes = {"Green with blue (Default)", "Green with red", "Green with orange", "Green with yellow", "Green with green", "Green with pink", "Green with purple"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
SharedPreferences sharedPref = getApplicationContext().getSharedPreferences("Settings", Context.MODE_PRIVATE);
themeno = sharedPref.getInt("Theme", 1);
Spinner themeSpinner = (Spinner) findViewById(R.id.spinner);
if(themeno == 1){
setTheme(R.style.AppTheme);
themeSpinner.setSelection(1);
} else if (themeno == 2){
setTheme(R.style.AppTheme2);
themeSpinner.setSelection(2);
} else if (themeno == 3){
setTheme(R.style.AppTheme3);
themeSpinner.setSelection(3);
} else if (themeno == 4){
setTheme(R.style.AppTheme4);
themeSpinner.setSelection(4);
} else if (themeno == 5){
setTheme(R.style.AppTheme5);
themeSpinner.setSelection(5);
} else if (themeno == 6){
setTheme(R.style.AppTheme6);
themeSpinner.setSelection(6);
} else if (themeno == 7){
setTheme(R.style.AppTheme7);
themeSpinner.setSelection(7);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(settings.this, android.R.layout.simple_list_item_1 , themes);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
themeSpinner.setAdapter(adapter);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
SharedPreferences sharedPref = getApplicationContext().getSharedPreferences("Settings", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
selected = parent.getItemAtPosition(position).toString();
Toast toast = Toast.makeText(getApplicationContext(), "Theme selected. Colours will change when you close settings.", Toast.LENGTH_SHORT);
if(selected == "Green with blue (Default)"){
editor.putInt("Theme", 1);
toast.show();
}
if(selected == "Green with red"){
editor.putInt("Theme", 2);
toast.show();
}
if(selected == "Green with orange"){
editor.putInt("Theme", 3);
toast.show();
}
if(selected == "Green with yellow"){
editor.putInt("Theme", 4);
toast.show();
}
if(selected == "Green with green"){
editor.putInt("Theme", 5);
toast.show();
}
if(selected == "Green with pink"){
editor.putInt("Theme", 6);
toast.show();
}
if(selected == "Green with purple"){
editor.putInt("Theme", 7);
toast.show();
}
}
Он по-прежнему не работает. Я добавил toast.show(); перед утверждениями if, чтобы убедиться, что это проблема, но она даже не показала этого, поэтому я думаю, что метод просто не вызван, но я не знаю, почему. –
@zakwoolley не уверен, что он будет работать, но вы можете попытаться изменить 'android.R.layout.simple_list_item_1' на' android.R.layout.simple_spinner_item'? Кроме того, проверьте с 'Log.v', если' onItemSelected' получает вызов – Marat
Нет, это не работает. Я проверил, и я не думаю, что onItemSelected получает вызов. –