2017-09-24 44 views
0

我知道关于java.lang.NullPointerException的一般情况,但需要帮助调试此特定情况。请看:我已经将我的布局editText与我的Java类EditText连接起来,但在尝试从文本字段中获取文本时仍然出现错误。需要帮助调试EditText对象上的空对象引用错误的特定奇怪问题Android

我仍然看到这个错误:

java.lang.NullPointerException: Attempt to invoke virtual method 
'android.text.Editable android.widget.EditText.getText()' on a null object 
reference 

,这里是我的代码。 在com.ramadanapps.android.fireapp.Register.createUser(Register.java:56)

package com.ramadanapps.android.fireapp; 

public class Register extends AppCompatActivity { 

private FirebaseAuth mAuth; 
private EditText mEmail; 
private EditText mPassword; 
private Button mRegister; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_register); 

    mEmail = (EditText) findViewById(R.id.signUpEmail); 
    mPassword = (EditText) findViewById(R.id.singUpPassword); 
    mRegister = (Button) findViewById(R.id.signUpBtn); 

    mAuth = FirebaseAuth.getInstance(); 

    mRegister.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      createUser(); 
     } 
    }); 
} 
@Override 
public void onStart(){ 
    super.onStart(); 

    FirebaseUser currentUser = mAuth.getCurrentUser(); 
    if (currentUser != null){ 
     Toast.makeText(Register.this,"Already signed in", Toast.LENGTH_LONG).show(); 
    } 
} 

private void createUser() { 
    String email = mEmail.getText().toString(); 
    String password = mPassword.getText().toString(); 

    mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      if (task.isSuccessful()){ 
       Toast.makeText(Register.this,"Successful", Toast.LENGTH_LONG).show(); 
       startActivity(new Intent(Register.this, MainActivity.class)); 
      } else{ 
       Toast.makeText(Register.this,"Failure", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 
} 
[![enter image description here][1]][1]} 

我不知道问题出在哪里。

这里是我的XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.ramadanapps.android.fireapp.Register"> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="textEmailAddress" 
    android:ems="10" 
    android:id="@+id/signUpEmail" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginTop="32dp" 
    android:hint="Email" /> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="textPassword" 
    android:ems="10" 
    android:id="@+id/singUpPassword" 
    android:layout_below="@+id/signUpEmail" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="46dp" 
    android:hint="Password" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Sign Up" 
    android:id="@+id/signUpBtn" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Sign Up" 
    android:id="@+id/textView2" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:textSize="25dp" /> 
</RelativeLayout> 

的XML具有ID signUpEmail,我不知道还在哪里出了问题。

+0

你肯定不存在与该ID'signUpEmail'你的XML一个EditText?张贴你的xml,也可以通过添加注释来标记行号56。 –

+0

你能发布activity_register.xml吗? –

回答

0

我在你身上只安装了2个代码: 1.我使用自己的firebase DB 2.我的MainActivity不同 - 实际上我创建了一个只用于测试的空代码。

该应用程序工作正常 - 我用diffeent(假)邮件和密码成功注册了几次。每次我被传递给主要活动,并在按下“返回”时 - 成功移回到“注册”活动。 (附带快照)。

到目前为止没有失败。 当我失败时 - 这是当试图注册邮件或密码的空字段 - 这是预期的,你需要验证表格。

其他可能的失败原因出现在我的脑海里 - 是您的主要活动。可能在onStart或onCreate方法中引用了未定义的TextViews?你想与相应的XML分享吗?

谢谢,祝你好运! ))

enter image description here