为什么我在空对象引用上收到 'android.widget.EditText com.google.android.material.textfield.TextInputLayout.getEditText()' 错误
Why am I getting error of 'android.widget.EditText com.google.android.material.textfield.TextInputLayout.getEditText()' on a null object reference
我看过很多与此问题相关的论坛,但都没有解决我的问题。我希望我在这里得到它。
这是我的Activity代码
public class addIndividual extends AppCompatActivity {
public TextInputLayout individualName;
public TextInputLayout individualPhno;
FirebaseFirestore db;
String name;
String phno;
@Override
protected void onCreate(Bundle savedInstanceState) {
db=FirebaseFirestore.getInstance();
individualName = (TextInputLayout) findViewById(R.id.individualName);
individualPhno= (TextInputLayout) findViewById(R.id.individualPhno);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_individual);
}
public void submitButton(View view) {
name= individualName.getEditText().getText().toString();
phno= "hello";
Map<String,String> individualInfo = new HashMap<String,String >();
individualInfo.put("name",name.trim());
individualInfo.put("phNo",phno.trim());
db.collection("individuals").add(individualInfo)
.addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
@Override
public void onComplete(@NonNull Task<DocumentReference> task) {
Toast.makeText(addIndividual.this, "Inserted Successfully", Toast.LENGTH_SHORT).show();
}
});
}
}
XML代码
<LinearLayout 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:orientation="horizontal"
android:layout_margin="10dp"
tools:context=".PSLogin.addIndividual">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/individualName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Individual Name"
android:layout_below="@id/textView1"
android:layout_marginTop="40dp"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
>
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/individualPhno"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Individual Phone Number"
android:layout_below="@id/username"
android:layout_marginTop="30dp"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
>
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
/>
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/submit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Submit"
android:layout_below="@id/password"
android:onClick="submitButton"
android:layout_marginTop="30dp"
android:gravity="center"
style="?attr/materialButtonOutlinedStyle"
/>
</LinearLayout>
</LinearLayout>
enter code here
我已将 TextInputLayout 更改为 EditText,但问题仍然没有结果
错误
由以下原因引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法 'android.text.Editable android.widget.EditText.getText()'
什么时候
public EditText 个人名称;
错误发生在 name= individualName.getEditText().getText().toString();
在您的 onCreate() 中,您在设置视图之前初始化您的视图。您的 onCreate 应如下所示:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_individual);
db=FirebaseFirestore.getInstance();
individualName = (TextInputLayout)findViewById(R.id.individualName);
individualPhno= (TextInputLayout) findViewById(R.id.individualPhno);
}
我看过很多与此问题相关的论坛,但都没有解决我的问题。我希望我在这里得到它。
这是我的Activity代码
public class addIndividual extends AppCompatActivity {
public TextInputLayout individualName;
public TextInputLayout individualPhno;
FirebaseFirestore db;
String name;
String phno;
@Override
protected void onCreate(Bundle savedInstanceState) {
db=FirebaseFirestore.getInstance();
individualName = (TextInputLayout) findViewById(R.id.individualName);
individualPhno= (TextInputLayout) findViewById(R.id.individualPhno);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_individual);
}
public void submitButton(View view) {
name= individualName.getEditText().getText().toString();
phno= "hello";
Map<String,String> individualInfo = new HashMap<String,String >();
individualInfo.put("name",name.trim());
individualInfo.put("phNo",phno.trim());
db.collection("individuals").add(individualInfo)
.addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
@Override
public void onComplete(@NonNull Task<DocumentReference> task) {
Toast.makeText(addIndividual.this, "Inserted Successfully", Toast.LENGTH_SHORT).show();
}
});
}
}
XML代码
<LinearLayout 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:orientation="horizontal"
android:layout_margin="10dp"
tools:context=".PSLogin.addIndividual">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/individualName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Individual Name"
android:layout_below="@id/textView1"
android:layout_marginTop="40dp"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
>
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/individualPhno"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Individual Phone Number"
android:layout_below="@id/username"
android:layout_marginTop="30dp"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
>
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
/>
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/submit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Submit"
android:layout_below="@id/password"
android:onClick="submitButton"
android:layout_marginTop="30dp"
android:gravity="center"
style="?attr/materialButtonOutlinedStyle"
/>
</LinearLayout>
</LinearLayout>
enter code here
我已将 TextInputLayout 更改为 EditText,但问题仍然没有结果 错误 由以下原因引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法 'android.text.Editable android.widget.EditText.getText()' 什么时候 public EditText 个人名称;
错误发生在 name= individualName.getEditText().getText().toString();
在您的 onCreate() 中,您在设置视图之前初始化您的视图。您的 onCreate 应如下所示:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_individual);
db=FirebaseFirestore.getInstance();
individualName = (TextInputLayout)findViewById(R.id.individualName);
individualPhno= (TextInputLayout) findViewById(R.id.individualPhno);
}