Я пробовал разные вещи уже несколько часов, но я не могу понять, как обновить TextView, когда пользователь вводит новый текст через EditTextPreference в Android.
Я использую оператор switch в методе onSharedPreferenceChanged внутри анонимного класса слушателя. Однако, когда я устанавливаю player1View.setText (значение), ничего не происходит. Есть ли более простой способ выполнить эту задачу, а именно обновить textView с помощью пользовательского ввода?
Вот кусок кода, который я не могу заставить работать:
public class SettingsActivity extends AppCompatActivity
{
private TextView player1View;
private TextView player2View;
private SharedPreferences.OnSharedPreferenceChangeListener listener;
@Override
protected void onCreate(Bundle savedInstanceState)
{
player1View = findViewById(R.id.player1);
player2View = findViewById(R.id.player2);
super.onCreate(savedInstanceState);
getSupportFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
createListener();
}
private void createListener()
{
listener = new SharedPreferences.OnSharedPreferenceChangeListener()
{
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
EditTextPreference etp = (EditTextPreference) sharedPreferences;
String value = sharedPreferences.getString("player_one", "NULL");
switch(key)
{
case "switch_setting1":
//Do something
break;
case "player1_key":
player1View.setText(value);
break;
case "player2_key":
player2View.setText(value);
break;
}
}
};
PreferenceManager.getDefaultSharedPreferences(getApplicationContext())
.registerOnSharedPreferenceChangeListener(listener);
}
}
Скриншоты ниже должны более четко подчеркнуть, что я имею в виду. Поля, которые я хочу изменить, называются «Игрок 1» и «Игрок 2», и чтобы пользователь ввел новые имена через настройки, как показано.