마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

spinner에서 불러와서 if 문에 사용하기

0 추천

strings.xml>>

<string-array name="zero">
        <item>A</item>
        <item>B</item>
        <item>C</item>
        <item>D</item>
    </string-array>

 

첫번째 xml>>

Spinner spin = (Spinner)findViewById(R.id.spinner);
  spin.setPrompt("choice");
  
  adspin = ArrayAdapter.createFromResource(this, R.array.zero, android.R.layout.simple_spinner_item);
  adspin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  spin.setAdapter(adspin);
  
  spin.setOnItemSelectedListener(new OnItemSelectedListener() {
   public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    if(mInitSpinner == false) {
     mInitSpinner = true;
     return;
    }
    //*/
    one=adspin.getItem(position).toString();
   }
   @Override
   public void onNothingSelected(AdapterView<?> parent) {
    // TODO Auto-generated method stub
    
   }
  });

-------------------------------------------------------------------------------------

Intent myintent = new Intent(this, A_b.class);
    myintent.putExtra("com.example.terry.basicintentsample.A",one);

두번째 xml>>

Intent myintent = getIntent();
String two = myintent.getStringExtra("com.example.terry.basicintentsample.A");

TextView view1 = (TextView)findViewById(R.id.TextView1);
view1.setText(two);

String fruit;

if(two=="A") {
  String fruit = "apple";
} else if(two=="B") {
  String fruit = "graph";
} else if(two=="C") {
  String fruit = "peach";
} else if(two=="D") {
  String fruit = "lemon";
} else {
  String fruit = "fail";
}

TextView view2 = (TextView)findViewById(R.id.TextView2);
view2.setText(fruit);

결과>>

C (spinner에서 선택한 값)

fail

 

 

strings.xml에서 보듯이 spinner의 내용에 들어갈 array를 만들고

첫번째 xml에서 보면 one이라는 String 변수에 spinner에서 선택한 알파벳을 넣어줍니다.

그리고 Intent를 이용해서 두번째 xml로 전달해줍니다.

그러면 두번째 xml에서 전달받은 String을 two라는 String 변수에 넣고,

이를 if문에 사용합니다.

그리고 layout에 textview1에는 spinner에서 선택한 알파벳을,

textview2에는 if문을 이용한 과일이름을 출력합니다.

 

Q1. spinner에서 처음 값이 A로 안드로이드 화면에 뜹니다.

그래서 A를 선택하려고 spinner를 선택하지 않고 그대로 두면

결과 layout의 textview1에 빈칸으로 뜹니다.

default값으로 A로 지정하려면 어떻게 해야 하나요?

 

Q2. 첫번째 xml에서 spinner가 선택한 문자열을 받아서 if문에 사용을 하는데

if문에서 인식을 못합니다. 무조건 if문 내의 else에 있는 fail만 출력합니다.

String을 ==으로 표현하는게 잘못인가해서 two.equals("A")형태로도 해보고

view1.getText().equals("A")형태로도 해봤는데 two값을 아예 못받는 것 같습니다.

그런데 view1에 출력은 잘 됩니다. 무엇이 문제인가요?

 

전문가 분들의 도움 부탁드립니다.

익명사용자 님이 2015년 10월 30일 질문

1개의 답변

0 추천

1.

A에 해당하는 포지션값을 스피너변수.setSelection(A포지션); 

으로 지정하시면 될거같은..onCreate나 스피너를 처음 건드리는 위치등 어디든지요.

String.xml 보니 A,B...순으로 있는데 이게 변하지 않는거라면 0번[첫번째]으로 고정하세요.

A라는 첫번째 값을 사용하려고 굳이 스피너를 조작하지 않고 값을 넘기고 싶으시면

늘 0번을 기준으로 해서 값을 넘기시면 될듯...지금보니 setOnItemSelectedListener해야

one에 값이 들어가는거같은데, default값으로 항상 스피너 배열 첫번째값을 갖고계세요.

그래야 선택없이 넘기면 기본값인 A가 나오고, 선택하면 B~이후로 나오지않을까요

2.

문자열 대 문자열 비교할 땐 알고계신대로 ==가 아닌 equals로 비교하는게 맞습니다.

인텐트로 one이란 string값을 넘겨서 getintent로 받으신거같은데, 

그 받은 값 two가 textview에는 잘 출력되고 밑에서 비교가 안된다는 것인지..?

setText 하신 후에도 two값이 제대로 있는지 log로 출력해서 확인해보셔요.

 

망고사탕 (5,000 포인트) 님이 2015년 10월 30일 답변
...