Java setOnClickListener(android.view.view$OnClickListener)和#x27;关于空对象引用

Java setOnClickListener(android.view.view$OnClickListener)和#x27;关于空对象引用,java,android,object,Java,Android,Object,我有一个错误: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

我有一个错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
                                                                                           at mt.edu.mcast.navigationfragmentsexample.BlankFragment2.onCreateView(BlankFragment2.java:92)
这是java BlankFragment2中的代码:

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

    View view = inflater.inflate(R.layout.fragment_blank_fragment2,container,false);
    final EditText etName = (EditText) this.getActivity().findViewById(R.id.etName);
    final EditText etSurname = (EditText) this.getActivity().findViewById(R.id.etSurname);
    final EditText etUsername = (EditText) this.getActivity().findViewById(R.id.etUsername);
    final EditText etPassword = (EditText) this.getActivity().findViewById(R.id.etPassword);
    final EditText etEmail = (EditText) this.getActivity().findViewById(R.id.etEmail);
    final EditText etPhone = (EditText) this.getActivity().findViewById(R.id.etPhone);
    final EditText etAge = (EditText) this.getActivity().findViewById(R.id.etAge);
    final Button bRegister = (Button) this.getActivity().findViewById(R.id.bRegister);
此时错误v

   bRegister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            final String name = etName.getText().toString();
            final String surname = etSurname.getText().toString();
            final String username = etUsername.getText().toString();
            final String password = etPassword.getText().toString();
            final String email = etEmail.getText().toString();
            final int phone = Integer.parseInt(etPhone.getText().toString());
            final int age = Integer.parseInt(etAge.getText().toString());

            Response.Listener<String> responseListener = new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");
                        if(success){
                            Intent intent = new Intent(getActivity(), BlankFragment1.class);
                            BlankFragment2.this.startActivity(intent);
                        }
                        else {
                            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); //create an error message
                            builder.setMessage("Register Failed")
                                    .setNegativeButton("Retry",null) //click retry to retry registration
                                    .create()
                                    .show();
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }


                }
            };
            RegisterRequest registerRequest = new RegisterRequest(name, surname,age,username,password,email,phone,responseListener);
            RequestQueue queue = Volley.newRequestQueue(getActivity());
            queue.add(registerRequest);
        }
    });
    return view;
}
bRegister.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
最终字符串名称=etName.getText().toString();
最后一个字符串姓氏=etnamame.getText().toString();
最终字符串username=etUsername.getText().toString();
最终字符串password=etPassword.getText().toString();
最终字符串email=etEmail.getText().toString();
final int phone=Integer.parseInt(etPhone.getText().toString());
final int age=Integer.parseInt(etAge.getText().toString());
Response.Listener responseListener=新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONObject jsonResponse=新的JSONObject(响应);
boolean success=jsonResponse.getBoolean(“success”);
如果(成功){
Intent Intent=新的Intent(getActivity(),BlankFragment1.class);
空白片段2.这是一个开始的触觉(意图);
}
否则{
AlertDialog.Builder=新建AlertDialog.Builder(getActivity());//创建错误消息
builder.setMessage(“注册失败”)
.setNegativeButton(“重试”,null)//单击“重试”重试注册
.create()
.show();
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
};
RegisterRequest RegisterRequest=新的RegisterRequest(姓名、姓氏、年龄、用户名、密码、电子邮件、电话、应答者);
RequestQueue=Volley.newRequestQueue(getActivity());
添加(registerRequest);
}
});
返回视图;
}

有什么帮助吗?

您正在活动中查找视图,但需要在刚才为片段膨胀的视图中查找。对于所有的
findViewById
调用,将
this.getActivity()
更改为
view
,因此它将是
view.findViewById

您应该从根视图/膨胀视图找到视图,而不是从getActivity()找到视图。因此,将这个.getActivity()更改为视图

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

View view = inflater.inflate(R.layout.fragment_blank_fragment2,container,false);
final EditText etName = (EditText) view.findViewById(R.id.etName);
final EditText etSurname = (EditText) view.findViewById(R.id.etSurname);
final EditText etUsername = (EditText) view.findViewById(R.id.etUsername);
final EditText etPassword = (EditText) view.findViewById(R.id.etPassword);
final EditText etEmail = (EditText) view.findViewById(R.id.etEmail);
final EditText etPhone = (EditText) view.findViewById(R.id.etPhone);
final EditText etAge = (EditText) view.findViewById(R.id.etAge);
final Button bRegister = (Button) view.findViewById(R.id.bRegister);
}
试试这个-

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

    View view = inflater.inflate(R.layout.fragment_blank_fragment2,container,false);
    final EditText etName = (EditText) view.findViewById(R.id.etName);
    final EditText etSurname = (EditText) view.findViewById(R.id.etSurname);
    final EditText etUsername = (EditText) view.findViewById(R.id.etUsername);
    final EditText etPassword = (EditText) view.findViewById(R.id.etPassword);
    final EditText etEmail = (EditText) view.findViewById(R.id.etEmail);
    final EditText etPhone = (EditText) view.findViewById(R.id.etPhone);
    final EditText etAge = (EditText) view.findViewById(R.id.etAge);
    final Button bRegister = (Button) view.findViewById(R.id.bRegister);

第二段代码在哪里??我的意思是碎片生命周期的哪个功能??可能是您的
b注册表
不属于
fragment\u blank\u fragment2
layoutuse view.findViewByDYIDY您正在活动中引用
view(b注册表)
。在特定的
视图上创建对象
而不是
活动
。您正在调用
final Button bRegister=(Button)this.getActivity().findViewById(R.id.bRegister)在活动中,尝试在片段
视图中调用它<代码>最终按钮b注册表=(按钮)视图.findViewById(R.id.b注册表)是的,谢谢你它成功了!:)是的,谢谢你,成功了!:)是的,谢谢你,成功了!:)是的,谢谢你,成功了!:)