私はかなり時間がかかりましたが、AndroidでEditTextPreferenceで新しいテキストを入力したときにTextViewを更新する方法については頭を悩ますことができません。OnsharedPreferenceChangeListenerでTextViewのテキストを更新する
匿名リスナークラス内のonSharedPreferenceChangedメソッドでswitch文を使用します。しかし、player1View.setText(value)を設定しても何も起こりません。このタスクを達成するためのより簡単な方法がありますか?つまり、ユーザー入力を介して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」という名前のもので、ユーザーが図示のように設定して新しい名前を入力することを実現します。
Screenshots from the Android Emulator
私はすべてのpreferenceswitchesを処理し、それに応じてアプリケーションの外観/動作を変更できる関数を構築しようとしています。私の問題は、ユーザーが設定で適用した変更が、今やアプリに全く表示されないことです。例えば。 JoeがEditTextPreferenceフィールドに入力されている場合、「Player 1」は「Joe」に変更されません。 –