无法解析片段中的 findViewById

M A*_*yah 4 android fragment findviewbyid android-studio

我正在尝试从片段 xml 中获取 id 所以这里是错误代码“无法解析 findViewById 方法”

有没有我可以findViewById在 Fragment 中使用的?

public class Slide_Teacher_Add extends Fragment implements View.OnClickListener {

private EditText teacher_id_number;
private EditText teacher_fullname;
private EditText teacher_lesson;
private EditText teacher_contact;

private Button btn_add_teacher;

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.activity_slide__teacher_add,container,false);
    return v;

    teacher_id_number = (EditText) findViewById(R.id.teacher_id_number);
    teacher_fullname = (EditText) findViewById(R.id.teacher_fullname);
    teacher_lesson = (EditText) findViewById(R.id.teacher_lesson);
    teacher_contact = (EditText) findViewById(R.id.teacher_contact);

    btn_add_teacher = (Button) findViewById(R.id.btn_add_teacher);


    btn_add_teacher.setOnClickListener(this);
}
Run Code Online (Sandbox Code Playgroud)

Yas*_*n99 5

首先,您findViewById()在 return 语句之后调用,因此它们根本不会被执行。接下来,您需要调用findViewById()视图的上下文,view.findViewById(int);将代码重写为:

View v = inflater.inflate(R.layout.activity_slide__teacher_add,container,false);
teacher_id_number = v.findViewById(R.id.teacher_id_number); //Note this line
//other tasks you need to do
return v;
Run Code Online (Sandbox Code Playgroud)

确保return是函数的最后一条语句。


Abb*_*s m 4

onViewCreated您无需查看即可使用功能Inflate。例如 :

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    view.findViewById(...);
    //....
}
Run Code Online (Sandbox Code Playgroud)

或者您必须从对象类 ( )调用findViewById函数。例如 :vView

teacher_id_number = (EditText) v.findViewById(R.id.teacher_id_number);
Run Code Online (Sandbox Code Playgroud)