【问题标题】:findviewbyid not working in public static class android javafindviewbyid 在公共静态类 android java 中不起作用
【发布时间】:2021-05-16 23:56:37
【问题描述】:
public static class DatePickerFragment extends DialogFragment
            implements DatePickerDialog.OnDateSetListener {

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // Use the current date as the default date in the picker
            final Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DAY_OF_MONTH);

            // Create a new instance of DatePickerDialog and return it
            return new DatePickerDialog(getActivity(), this, year, month, day);
        }

        public void onDateSet(DatePicker view, int year, int month, int day) {
            EditText dob = findViewById(R.id.dob);
        }
    }
    public void showDatePickerDialog(View v) {
        DialogFragment newFragment = new DatePickerFragment();
        newFragment.show(getSupportFragmentManager(), "datePicker");
    }

我想把我从用户那里得到的值放到 "OnDataSet" 函数中的 EditText 中,而 findviewbyid There Is Giving Me Error

【问题讨论】:

    标签: java android static-classes


    【解决方案1】:

    可能是因为您没有将其类型转换为 EditText。 EditText dob = (EditText)findViewById(R.id.dob);

    【讨论】:

      【解决方案2】:

      如果你想在 static 中使用findviewById,你应该打电话给rootView

      rootView.findViewById
      

      ** 为了方便工作,您可以使用这个库ButterKnife

      更多信息:

      1. findviewbyid-inside-a-static-method

      2. findviewbyid-in-static-method-in-different-class

      3. findviewbyid-not-working-in-static

      【讨论】:

      • 欢迎您,记住 ButterKnife 是非常好的图书馆
      【解决方案3】:

      这是我写的答案

      public static class DatePickerFragment extends DialogFragment
                  implements DatePickerDialog.OnDateSetListener {
      
              @Override
              public Dialog onCreateDialog(Bundle savedInstanceState) {
                  // Use the current date as the default date in the picker
                  final Calendar c = Calendar.getInstance();
                  int year = c.get(Calendar.YEAR);
                  int month = c.get(Calendar.MONTH);
                  int day = c.get(Calendar.DAY_OF_MONTH);
      
                  // Create a new instance of DatePickerDialog and return it
                  return new DatePickerDialog(getActivity(), this, year, month, day);
              }
      
              public void onDateSet(DatePicker view, int year, int month, int day) {
                  EditText dob = getActivity().findViewById(R.id.dob);
                  dob.setText(day+"/"+month+"/"+year);
              }
          }
      

      onDateSet 的变化

      public void onDateSet(DatePicker view, int year, int month, int day) {
          EditText dob = getActivity().findViewById(R.id.dob);
          dob.setText(day+"/"+month+"/"+year);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        相关资源
        最近更新 更多