我尝试过获取edittext值但不起作用。这是我在android片段中的代码:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View v=inflater.inflate(R.layout.fragment_add_patient, container, false);
final EditText FirstName=(EditText) v.findViewById(R.id.FirstName);
final Button addPatientButton=(Button) v.findViewById(R.id.AddPatientButton);
addPatientButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isOnline()) {
try {
if (FirstName.getText().toString().trim().equals("")) {
FirstName.setError("First Name is required!");
return;
}
我在此行收到错误:FirstName.getText().toString().trim().equals("")
错误如下:Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
。
这是我的fragment_add_patient xml文件,其中包含所有项目。
<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"
tools:context="com.example.ionut.myapplication.PatientController.AddPatientFragment">
<!-- TODO: Update blank fragment layout -->
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="80dp"
android:id="@+id/PatientFirstName"
android:hint="First Name" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:layout_marginTop="27dp"
android:id="@+id/PatientLastName"
android:hint="Last Name"
android:layout_below="@+id/PatientFirstName"
android:layout_alignLeft="@+id/PatientFirstName"
android:layout_alignStart="@+id/PatientFirstName" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:ems="10"
android:layout_below="@+id/PatientLastName"
android:layout_alignRight="@+id/PatientLastName"
android:layout_alignEnd="@+id/PatientLastName"
android:layout_marginTop="25dp"
android:id="@+id/Email"
android:hint="Email" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:layout_marginTop="22dp"
android:id="@+id/PatientAge"
android:hint="Age"
android:layout_below="@+id/Email"
android:layout_alignLeft="@+id/Email"
android:layout_alignStart="@+id/Email" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="phone"
android:ems="10"
android:layout_below="@+id/PatientAge"
android:layout_alignLeft="@+id/PatientAge"
android:layout_alignStart="@+id/PatientAge"
android:layout_marginTop="32dp"
android:id="@+id/PatientPhone"
android:hint="Phone" />
<Button
android:text="Add Patient"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/AddPatientButton"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="77dp" />
<Spinner
android:id="@+id/cspinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:layout_below="@+id/PatientPhone"
android:layout_alignRight="@+id/PatientPhone"
android:layout_alignEnd="@+id/PatientPhone"
android:layout_alignLeft="@+id/PatientPhone"
android:layout_alignStart="@+id/PatientPhone" />
提前致谢!
答案 0 :(得分:2)
FirstName EditText为null,因为findViewById方法正在尝试查找ID为FirstName
的editext,但正确的ID为PatientFirstName
要解决此问题,请替换
final EditText FirstName=(EditText) v.findViewById(R.id.FirstName);
带
final EditText FirstName=(EditText) v.findViewById(R.id.PatientFirstName);
答案 1 :(得分:0)
您只是尝试查询布局中的现有ID。
“名字”EditText的实际ID是“PatientFirstName”。还尝试使您的代码有点组织如下
1-将您的Button,EditText变量声明为可在片段内任何位置访问的全局变量
2-如果你要用点击事件添加更多按钮,那么你应该让你的片段或活动实现View.onClickListener