Spinner not saving as Shared / Saved Preference를 사용하여 하나의 스피너를 공유 환경 설정으로 저장할 수 있습니다.
그러나 여러 개의 스피너를 서로 연결해야하고 저장하려고 할 때 문제가 발생하고 이유를 잘 모르겠습니다.
내 스피너가 연결되는 방법은 다음과 같습니다. 첫 번째 스피너를 선택하면 두 번째 스피너가 활성화됩니다.
spinner = (Spinner)findViewById(R.id.spnMondayExercise);
adapter = ArrayAdapter.createFromResource(this, R.array.Exercise, android.R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
long item = parent.getItemIdAtPosition(position);
if (item == 0){
monExc = 0;
spinner = (Spinner)findViewById(R.id.spnMondayDuration);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setEnabled(false);
}
그리고 이것은 위의 스피너에 의해 활성화되는 다른 스피너입니다.
//Monday Duration
spinner = (Spinner)findViewById(R.id.spnMondayDuration);
adapter = ArrayAdapter.createFromResource(this, R.array.Duration, android.R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
long item = parent.getItemIdAtPosition(position);
if (item == 0){
monDur = 0;
}
else if (item ==1)
{
monDur = .16;
}
else if (item ==2)
{
monDur = .33;
}
다음은 내 loadData입니다.
private void loadData() {
SharedPreferences prefs = getPreferences(0);
spnMondayDuration.setSelection(prefs.getInt("spnMonDur", 0));
spnMondayExercise.setSelection(prefs.getInt("spnMonExc", 0));
이것이 내가 우선권을 저장하는 곳입니다.
SharedPreferences.Editor editor = getPreferences(0).edit();
int spnMonDur1 = spnMondayDuration.getSelectedItemPosition();
int spnMonExc1 = spnMondayExercise.getSelectedItemPosition();
editor.putInt("spnMonDur", spnMonDur1);
editor.putInt("spnMonExc", spnMonExc1);
editor.commit();
두 스피너의 코드가 동일한 클래스에 있으면 spinner
및 adapter
속성을 완전히 엉망으로 만드는 것 입니다. 다른 스피너와 두 개의 다른 어댑터에 대해 두 개의 변수를 만드는 것이 어떻습니까?
onItemSelected()
첫 번째 스피너 의 방법이 잘못되었습니다. 먼저 변수를 두 번째 스피너를 가리키고 어댑터를 설정하고 마지막으로 비활성화합니다.이이면의 의도가 무엇인지 정말 모르겠습니다. 동일한 것을 재사용하고 Spinner
다른 데이터 (따라서 다른 의미)로 채우 Spinner
시겠습니까 , 아니면 두 개의 별도 보기가 있습니까?
두 개의 다른 Spinner
s 가 있다고 가정하면 다음과 같이 할 것입니다 (코드는 아직 명확하지 않지만 시작점으로 사용).
// initialize Exercise spinner
spinnerExercise = (Spinner)findViewById(R.id.spnMondayExercise);
adapterExercise = ArrayAdapter.createFromResource(this, R.array.Exercise, android.R.layout.simple_spinner_dropdown_item);
adapterExercise.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerExercise.setAdapter(adapterExercise);
// initialize Duration spinner
spinnerDuration = (Spinner)findViewById(R.id.spnMondayDuration);
adapterDuration = ArrayAdapter.createFromResource(this, R.array.Duration, android.R.layout.simple_spinner_dropdown_item);
adapterDuration.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerDuration.setAdapter(adapterDuration);
// disable by default until an exercise is selected
spinnerDuration.setEnabled(false);
spinnerExercise.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, position, long id) {
long item = parent.getItemIdAtPosition(position);
if (item == 0){
monExc = 0;
spinnerDuration.setEnabled(true);
}
........
}
}
spinnerDuration.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
long item = parent.getItemIdAtPosition(position);
if (item == 0){
monDur = 0;
}
else if (item ==1)
{
monDur = .16;
}
else if (item ==2)
{
monDur = .33;
}
......
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다