여기서는 XML과 JAVA 모두에서 Spinner를 사용하는 연습을하려고합니다. 구체적으로는 차, 스타일, 풍미, 토핑에 대한 토스트를 선택한 프로그램을 만들었습니다. 이 단계를 진행하기 전에이 프로그램의 다른 간단한 버전을 확인했습니다. 그 시점에서 모든 것이 원활하게 실행되었습니다. 그러나 그것은 너무 혼란 스럽습니다. 사실, 나는 무엇이 잘못되었는지 알아낼만큼 충분히 경험이 없습니다. 초보자를 도와주세요. 코드가 조금 길어질 수 있습니다. 매우 감사합니다.
package com.example.second_spinner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class Second_Spinner extends Activity {
private String tea_message = "";
private String style_message = "";
private String flava_message = "";
private String moreLove_message = "";
private String message = getString(R.string.message);
private int maximum_flava = 4;
private ArrayList<String> alreadyFlava = new ArrayList<String>();
private ArrayList<String> alreadyLove = new ArrayList<String>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);;
setContentView(R.layout.activity_second__spinner);
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);
spinner1.setOnItemSelectedListener(new MilkTea());
spinner2.setOnItemSelectedListener(new MilkTea());
Spinner spinner3 = (Spinner) findViewById(R.id.spinner3);
Spinner spinner4 = (Spinner) findViewById(R.id.spinner4);
List<String> flava = getFlava();
ArrayAdapter<String> spinnerAdapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,flava);
spinnerAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner3.setAdapter(spinnerAdapter1);
spinner3.setOnItemSelectedListener(new MilkTea());
List<String> moreLove = getMoreLove();
ArrayAdapter<String> spinnerAdapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,moreLove);
spinnerAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner4.setAdapter(spinnerAdapter2);
spinner4.setOnItemSelectedListener(new MilkTea());
}
private class MilkTea implements OnItemSelectedListener {
private boolean isFirst;
public void onItemSelected(AdapterView<?> spinner, View selectedView, int selectedIndex, long id) {
if (isFirst == false) {
isFirst = true;
}
else {
switch (selectedView.getId()) {
case (R.id.spinner1) :
tea_message = spinner.getItemAtPosition(selectedIndex).toString();
break;
case (R.id.spinner2) :
style_message = spinner.getItemAtPosition(selectedIndex).toString();
break;
case (R.id.spinner3) :
if (maximum_flava > 0) {
if (alreadyFlava.isEmpty()) {
flava_message = spinner.getItemAtPosition(selectedIndex).toString();
alreadyFlava.add(flava_message);
maximum_flava--;
}
else {
boolean sign = true;
String temp = spinner.getItemAtPosition(selectedIndex).toString();
for (int i = 0; i < alreadyFlava.size(); i++)
if (temp.equals(alreadyFlava.get(i))) {
sign = false;
break;
}
if (sign == true) {
flava_message += ","+temp;
alreadyFlava.add(flava_message);
maximum_flava--;
}
}
}
break;
case (R.id.spinner4) :
if (alreadyLove.isEmpty()) {
moreLove_message = spinner.getItemAtPosition(selectedIndex).toString();
alreadyFlava.add(flava_message);
}
else {
boolean sign = true;
String temp = spinner.getItemAtPosition(selectedIndex).toString();
for (int i = 0; i < alreadyLove.size(); i++)
if (temp.equals(alreadyLove.get(i))) {
sign = false;
break;
}
if (sign == true) {
moreLove_message += ","+temp;
alreadyLove.add(moreLove_message);
}
}
break;
}
message = String.format(message, tea_message, style_message, flava_message, moreLove_message);
Toast.makeText(getBaseContext(), message, Toast.LENGTH_SHORT).show();
}
}
public void onNothingSelected(AdapterView<?> spinner) {
}
}
private List<String> getFlava() {
String[] flava = {
"No, I'm good", "Honeydew", "Blood Orange", "Red Guava", "Kumquat", "Lychee", "Longan", "Blackberry",
"Pineapple", "Mango", "Passion Fruit", "Taro", "Strawberry", "Coconut"
};
List<String> flava_list = Arrays.asList(flava);
return flava_list;
}
private List<String> getMoreLove() {
String[] moreLove = {
"Not Today","Aloe Vera","Black Pearls", "Coffee Jelly","White Pearls","Grass Jelly","Passion Jelly",
"Coconut Jelly","Lychee Jelly","Strawberry Jelly","Manga Jelly","Manga Stars"
};
List<String> moreLove_list = Arrays.asList(moreLove);
return moreLove_list;
}
}
private String message = getString(R.string.message);
리소스에 너무 일찍 액세스하고 있습니다. 활동 생성시에는 자원에 액세스 할 수 없습니다 (예 : 멤버 변수 초기화시). onCreate()
활동 수명주기 까지 기다려야 합니다. getString()
거기로 이동하십시오 .
일반적으로 무엇이 잘못되었는지 알아 보려면 logcat의 예외 스택 추적을 참조하십시오. 질문에도 포함 시키십시오. 불행히도 MyApp이 중지되었습니다를 참조하십시오 . 어떻게 해결할 수 있습니까?
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다