안드로이드 스피너 값 전달
조회수 1511회
String[] items = { "4개월 미만", "4~6개월", "7~12개월", "중성화한 성묘", "일반 성묘", "운동량이 많은 성묘", "노묘", "비만묘"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// (밑에부터) 스피너 쓰기위해 쓰는 코드 //
Spinner spinner = findViewById(R.id.spinner); // 스피너 초기화
ArrayAdapter<String> adapter = new ArrayAdapter<String>( // 배열을 스트링타입으로 쓰겠다.
this, android.R.layout.simple_spinner_item, items);
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) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
} // 스피너 쓰기위한 어뎁터 메소드 선언부
});
Button button = findViewById(R.id.button);
if (items.equals("노묘")) {
if ( button != null ) {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showToast("g");
}
});
}
}
}
public void showToast(String data) { //토스트메세지 메소드 생성
Toast.makeText(this, data, Toast.LENGTH_LONG).show();
}
}
위처럼 스피너를 생성하고 배열을 만들었습니다. 제가 스피너에서 예를 들어 '노묘'를 선택했을때 임의로 짠 토스트 메세지가 뜨게하고싶은데 저렇게 해서는 안나오더군요 .. 어떻게하죠??
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
if (items.equals("노묘")) {
1 스피너의 상태가 "노묘"가 되었을 때.
button.setOnClickListener(new View.OnClickListener() {
2 버튼에 클릭 리스너를 등록할 것이다.
라는 목적을 갖고 작업하신듯 합니다만...
생각을 다르게 해봅시다.
일단 '버튼 클릭 리스너'를 먼저 등록하고() { 스피너에 저장된 값을 읽어오도록 설정하는 게 어떨까요? }
제 생각엔 이렇습니다.
if ( button != null ) { button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String selectedItemName = spinner.getSelectedItem().toString(); if (selectedItemName.equals("노묘")) { showToast("g"); } else if (selectedItemName.equals("비만묘")) { showToast("h"); } } }); }
애초에 1번 -> 2번의 순서를 달성하기 위해서는
스피너의 값 또한 버튼과 동일하게
상태가 변동되는 작업을 감시할 수 있는 장치가 필요합니다.(존재하긴 합니다. https://mailmail.tistory.com/16 참고하세요)
그리고 단순히 if문을 onCreate 시점에 넣어서는 그 어떤 객체의 상태값도 감지하지 못합니다.
그렇다면 버튼 클릭 리스너가 필요하진 않겠죠.
if (button.onClick) {}
과 같은 형태가 되었을테니까요.
/** 일단 감지하기 위한 장치를 마련하고, 조건을 붙이시길 바랍니다 **/
이벤트 리스너가 왜 존재하고, 어떤 형태로 등록해야 동작하는지 고민해보시길 바래요.
-
(•́ ✖ •̀)
알 수 없는 사용자
- 감사합니다. 다른일있어서 일주일만에 다시건드니까 제가 작성한 코드의 흐름도 까먹어서 어렵네요 ㅋㅋㅋㅋ 알려주신거 이해는 둘째치고 바로 적용해보니까 됬습니다. 더 살펴보면서 이해하고 반드시 제꺼로 만들겠습니다. 감사합니다ㅎㅎ 알 수 없는 사용자 2020.5.28 20:35
-
댓글 입력