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

Fragment 내에서 Spinner, setOnItemClickListener 문의드립니다.

0 추천

public class Fragment3 extends Fragment  {
 
 private Spinner MySpinner1;
 private Spinner MySpinner2;
 private Spinner MySpinner3;
 private Spinner MySpinner4; 
 private Spinner MySpinner6;
 
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle SavedInstanceState) {
  View v = inflater.inflate(R.layout.fragment3, container, false);  
  
  // 수령지역
  String [] values1 = {"제1교육관", "제2교육관", "학생회관", "제3교육관"};  
  MySpinner1 = (Spinner)v.findViewById(R.id.myspinner1);
  ArrayAdapter<String> adapterSpinner1 = new ArrayAdapter(this.getActivity(), android.R.layout.simple_spinner_item);
  adapterSpinner1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
  MySpinner1.setPrompt("수령지역");
  MySpinner1.setAdapter(adapterSpinner1);
  adapterSpinner1.addAll(values1);
  /*
  MySpinner1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
       String location = MySpinner1.getSelectedItem().toString(); // location 변수에 전달
      }
  });
  */
  
  // 분류
  String [] values2 = {"문서", "피자", "커피"};  
  MySpinner2 = (Spinner)v.findViewById(R.id.myspinner2);
  ArrayAdapter<String> adapterSpinner2 = new ArrayAdapter(this.getActivity(), android.R.layout.simple_spinner_item);
  adapterSpinner2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
  MySpinner2.setPrompt("분류");
  MySpinner2.setAdapter(adapterSpinner2);
  adapterSpinner2.addAll(values2);
  /*
  MySpinner2.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
       String group = MySpinner2.getSelectedItem().toString(); // group 변수에 전달
      }
  });
  */
  // 수량
  String [] values3 = {"1", "2", "3"};  
  MySpinner3 = (Spinner)v.findViewById(R.id.myspinner3);
  ArrayAdapter<String> adapterSpinner3 = new ArrayAdapter(this.getActivity(), android.R.layout.simple_spinner_item);
  adapterSpinner3.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
  MySpinner3.setPrompt("수량");
  MySpinner3.setAdapter(adapterSpinner3);
  adapterSpinner3.addAll(values3);
  
  /* MySpinner3.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
       String quantity = MySpinner3.getSelectedItem().toString(); // quantity 변수에 전달
      }
  });
  */  
  // 무게
  String [] values4 = {"0.5kg~1.0kg", "1.0kg~1.5kg", "1.5kg~2.0kg"};  
  MySpinner4 = (Spinner)v.findViewById(R.id.myspinner4);
  ArrayAdapter<String> adapterSpinner4 = new ArrayAdapter(this.getActivity(), android.R.layout.simple_spinner_item);
  adapterSpinner4.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
  MySpinner4.setPrompt("무게");
  MySpinner4.setAdapter(adapterSpinner4);
  adapterSpinner4.addAll(values4); 
  
  /*MySpinner4.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
       String weight = MySpinner4.getSelectedItem().toString(); //weight 변수에 전달
      }
  });
  */
  // 전달사항
  EditText MyedtText5 = (EditText)v.findViewById(R.id.myedttext5);   
  String memo = MyedtText5.getText().toString();// memo 변수에 전달
  
  // 배송시간
  String [] values6 = {"11:00", "12:00", "13:00", "14:00", "15:00"};  
  MySpinner6 = (Spinner)v.findViewById(R.id.myspinner6);
  MySpinner6.setPrompt("배송시간");
  ArrayAdapter<String> adapterSpinner6 = new ArrayAdapter(this.getActivity(), android.R.layout.simple_spinner_item);
  adapterSpinner6.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
  MySpinner6.setAdapter(adapterSpinner6);
  adapterSpinner6.addAll(values6);
  /* 
     MySpinner6.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
       String time = MySpinner6.getSelectedItem().toString(); // time 변수에 전달
      }
  });
     */     
  
  Button btn_ordOk = (Button)v.findViewById(R.id.btn_order);
  Button btn_ordCan = (Button)v.findViewById(R.id.btn_ordercancel); 
    
  return v;
 }
 public void onClick(View v) {
  if(v.getId() == R.id.btn_order) {
   // 위에 스피너에서 사용자가 select한 모든 현재값을 DB에 저장하려고합니다. 
  }
  else if(v.getId() == R.id.btn_ordercancel){
   // 초기 프래그먼트로 돌아가기
  }
 }
}

위와 같은 코드구요 Fragment 내에서 코드를 구현 중입니다.

onCreateView에서 Spinner 물려서  5개 스피너와 1개의 에딧텍스트를 구현했습니다.

return v 하기 전에 setOnItemClickListener를 이용해서 아이템 클릭 --> 각 지정 변수에 저장 -- > return v ; (뷰 저장)

--> Onclick id값으로 받아서 버튼이 눌리면 모든 스피너의 현재 select된 값을 db에 저장, 프래그먼트 이동.

이런 과정을 거치게 코드를 하고 싶습니다.

현재 위에 주석 처리된 setOnItemClickListener는 실제 적용시키면 오류나버려서 주석으로 놔두었구요.

액티비티에서 작업이라면 무난하게 하겠는데 프래그먼트라서 이해가 빨리오지않네요 ㅠㅠ

조언 부탁드립니다~!

sta48 (290 포인트) 님이 2015년 4월 29일 질문
sta48님이 2015년 4월 30일 수정

1개의 답변

0 추천
onCrate가 onCrateView와 onActivityCreated로 나눠서 사용해야 할 때가 있는거 말고는 별로 다를 것도 없습니다. 특히나 저 코드는 액티비티랑 달라질 이유가 없어요.

 

그리고 다음부터는 오류에 관한 질문은 오류 로그를 같이 올리세요
쎄미 (162,410 포인트) 님이 2015년 4월 30일 답변
Re: 쎄미님 말씀하신 로그캣 메세지입니다.
...