2014-12-20 3 views
1

ADD 버튼을 클릭하면 내 안드로이드 응용 프로그램이 실행되지 않습니다. 프래그먼트를 사용 중입니다. 도와 주시겠습니까? 올바른 방향으로 안내해주십시오. 나는 ADD 버튼을 클릭하면, 아무것도 필드Android 앱이 버튼을 클릭하지 않고 실행 중임

public class AthleteCreation extends Fragment implements View.OnClickListener{ 
    Communicator communicator; 
    Button btnAdd; 
    EditText editFirstName, editLastName, editAge, editTier; 

    public AthleteCreation() { 

    } 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_athlete_creation, container, false); 

     final List<String> genderList=new ArrayList<String>(); 
     genderList.add("Male"); 
     genderList.add("Female"); 

     Spinner s = (Spinner) view.findViewById(R.id.spinnerGender); 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity(), R.layout.support_simple_spinner_dropdown_item, genderList); 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     s.setAdapter(dataAdapter); 

     return view; 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
    } 

    public void initializeVariables(){ 
     btnAdd = (Button) getActivity().findViewById(R.id.btnAdd); 
     editFirstName = (EditText) getActivity().findViewById(R.id.editFirstName); 
     editLastName = (EditText) getActivity().findViewById(R.id.editLastName); 
     editAge = (EditText) getActivity().findViewById(R.id.editAge); 
     editTier = (EditText) getActivity().findViewById(R.id.editTier); 
    } 

    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     initializeVariables(); 
     btnAdd.setOnClickListener(this); 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
    } 

    @Override 
    public void onClick(View v) { 
     switch(v.getId()){ 
      case R.id.btnAdd: 
       Athlete athlete = new Athlete(); 

       if(editFirstName.getText().length() == 0 || editLastName.getText().length() == 0 
        || editAge.getText().length() == 0 || editTier.getText().length() == 0) { 
        Toast.makeText(getActivity(), "Fill in all fields!", Toast.LENGTH_SHORT).show(); 
       } 
       else{ 
        athlete.setFirstName(editFirstName.getText().toString()); 
        athlete.setLastName(editLastName.getText().toString()); 
        athlete.setAge(Integer.parseInt(editAge.getText().toString())); 
        athlete.setGender(""); 
        athlete.setEvent(""); 
        athlete.setTier(Integer.parseInt(editTier.getText().toString())); 

        Toast.makeText(getActivity(), athlete.toString(), Toast.LENGTH_LONG).show(); 
        communicator = (Communicator) getActivity(); 
        communicator.send(athlete); 
       } 
       break; 
     } 
    } 
} 

답변

1

initializeVariables()에서 Fragment의 루트보기를 사용하는 대신 getActivity().findViewById(R.id.foo)을 사용하고 있습니다. 그 이유는 switch 문에서 대소 문자가 구별되지 않기 때문일 수 있습니다.

시도 :

getView().findViewById(R.id.foo); 
+0

어떻게 (회 전자에서 선택한 것)을 athlete.setGender에 설정할 수 스피너에서 선택한 것을 얻을 것이다 –

+0

spinner.getSelectedItem() 사용 – Eddnav

1
당신의 initializeVariables에서

() 메소드를 비어있을 때조차 첫번째 토스트 문, 발생하지의 getView에 의해 getActivity()를 대체().

btnAdd = (Button) getView().findViewById(R.id.btnAdd); 

그러면 btnAdd.setOnClickListener(this)이 작동합니다.

관련 문제