지금 꽤 다른 시간 동안 시도했지만, 사용자가 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);
}
}
스크린 샷이 더 명확하게 무슨 뜻인지 강조한다 : 여기
코드의 비트는 내가 일을 할 수 없다. 내가 바꾸고 싶은 필드는 "Player 1"과 "Player 2"라는 이름의 필드입니다. 사용자가 그림과 같이 설정을 통해 새 이름을 입력하게합니다.Screenshots from the Android Emulator
나는 모든 preferenceswitches를 처리 할 수있는 함수를 만들고, 그에 따라 앱의 모양/동작을 변경하려고합니다. 내 문제는 사용자가 설정을 통해 적용하는 변경 사항이 이제는 앱에 전혀 표시되지 않는다는 것입니다. 예 : 조 선수가 EditTextPreference 필드에 입력되면 "선수 1"은 "조"로 변경되지 않습니다. –