안녕 얘들 아, 새해 복 많이 받으세요!setSingleChoiceItems 값이 작업 종료 후에 막대기가되지 않습니다.
수정이 불가능한 앱에 이상한 문제가 있습니다. 그것은 논리 오류가 있어야하지만, 어떻게 든 그것을 잡을 수 없어요.
여기에 문제는 내가 사전 설정 중 하나를 선택 후 응용 프로그램이 (MainActivity를 다시 시작하거나 살해됩니다) 멀티 태스킹에서 닫힐 때까지 선택이 붙어 있다는 것입니다 내 코드
public String[] str={"Disabled","Sound Quality Prefered","Bass Prefered","Battery Prefered",};
public int ThemePresetValue = 0;
private int SelectedThemePresetValue = 0;
public void presets() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("Select Your Sound Preset");
alertDialog.setNegativeButton("Cancel", null);
alertDialog.setPositiveButton("Select", themePresetDialogPositiveListener);
alertDialog.setSingleChoiceItems(str, ThemePresetValue, PresetListListener);
alertDialog.show();}
DialogInterface.OnClickListener PresetListListener =
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
SelectedThemePresetValue = which;
}
};
DialogInterface.OnClickListener themePresetDialogPositiveListener =
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mPreset = "";
ThemePresetValue = SelectedThemePresetValue;
if (ThemePresetValue == 0) {
mPreset = "Disabled";
} else if (ThemePresetValue == 1) {
mPreset = "Sound Quality Prefered";
} else if (ThemePresetValue == 2) {
mPreset = "Bass Prefered";
} else if (ThemePresetValue == 3) {
mPreset = "Battery Prefered";
}
if (mPreset.equals("Disabled")) {
disabler();
} else if (mPreset.equals("Sound Quality Prefered")) {
SoundQPreset();
} else if (mPreset.equals("Bass Prefered")) {
bassPreset();
} else if (mPreset.equals("Battery Prefered")) {
batteryPreset();
}
}
};
입니다. 그런 다음 앱을 다시 열면 대화 상자의 선택이 0 ("사용 안 함")으로 다시 설정됩니다.
왜 이런 일이 발생합니까? 해결책이 있습니까?
감사합니다. sharedPreferences (스위치로 이미 사용하고 있습니다)를 사용해야한다고 생각했지만 적절한 구현을 모르고있었습니다! – androidexpert35
getapplicationContext에서 null pointerExcemption을 얻고 있습니다 ... – androidexpert35
@ androidexpert35 Activity 또는 Context의 다른 하위 클래스에서 this를 호출해야합니다. – user8