我已经尝试了好几个小时了,但是当用户通过 Android 中的 EditTextPreference 输入新文本时,我似乎无法理解如何更新 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);
}
}
下面的截图应该更清楚地强调我的意思。我要更改的字段是名为“Player 1”和“Player 2”的字段,并实现用户通过设置输入新名称,如图所示。