2014-12-20 3 views
1

По какой-то причине мое приложение для Android не будет выполняться при нажатии кнопки ADD. Я использую фрагменты Не могли бы вы помочь мне и вести меня в правильном направлении. При нажатии на кнопку ADD, ничего не происходит, даже не первое заявление Toast, когда поля пустыПриложение для 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() вы используете getActivity().findViewById(R.id.foo) вместо использования корневого представления Фрагмента, вероятно, это причина, по которой вы не получите соответствующий случай в инструкции switch.

Try:

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

Как бы я получить то, что выбран в блесны должен быть установлен в athlete.setGender (что в выбранной блесны); –

+0

Использование spinner.getSelectedItem() – Eddnav

1

В ваших initializeVariables() метод, замените getActivity() по GetView().

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

Тогда btnAdd.setOnClickListener(this) будет работать.

Смежные вопросы