java - Android 应用程序不执行按钮单击

标签 java android android-fragments android-studio

由于某些原因,当单击“添加”按钮时,我的 android 应用程序将不会执行。 我正在使用 fragment 你能帮助我并引导我朝着正确的方向前进吗?当我点击 添加按钮,没有任何反应,当字段为空时甚至没有第一个 Toast 语句

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;
        }
    }
}

最佳答案

initializeVariables() 中,您使用的是 getActivity().findViewById(R.id.foo) 而不是使用 Fragment 的 Root View ,这可能是您不要在 switch 语句中得到匹配的大小写。

尝试:

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

关于java - Android 应用程序不执行按钮单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27584029/

相关文章:

java - 转换为推荐的参数化查询方法

java - 操作系统版本范围的 Maven 配置文件

android - Facebook 帐户套件在某些设备上崩溃

android - Android fragment 中的 dispatchTouchEvent

Android - 默认选中单选按钮时如何正确显示 fragment ?

带有 fragment 或 Activity 的 Android Studio 抽屉导航

java - Ant 构建失败,错误为 "SAXParseException: Open quote is expected for attribute"

java - JTextField水平滚动java swing

Android AlarmManager 不断关闭

java - 使用后退按钮时将 Activity 重置为原始状态