android studio fragment onclick 无法访问 edittext
android studio fragment onclick cannot access edittext
我有类似的东西:
public class EditCustomer extends Fragment implements OnClickListener {
public void onClick(View v) {
//this is what runs when you click the button
EditText editName=(EditText) v.findViewById(R.id.edit_name);
System.out.println(editName.getText()); //FAILS
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment4
View v=inflater.inflate(R.layout.fragment_edit_customer, container, false);
Button a = (Button) v.findViewById(R.id.update_cust_btn);
a.setOnClickListener(this); //adds button listener
EditText editText = (EditText)v.findViewById(R.id.edit_name);
System.out.print(editText.getText().toString());
return v;
}
...
由于某种原因,EditText 中出现空指针异常。当我在同一片段的 onCreateView()
中尝试同一行时,它工作得很好。有什么我没说到的吗?
步骤 1 导入这两个包。
import android.view.View;
import android.view.View.OnClickListener;
步骤 2 在您的 class
中实施 OnClickListener
public class SettingsFragment extends Fragment implements OnClickListener
步骤3在onCreateView()中定义Button和EditText;
注意:-全局声明按钮和EditText
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_settings, container,
false);
Admin_Email = (EditText) rootView.findViewById(R.id.et_admin_email);
btn_SET = (Button) rootView.findViewById(R.id.btn_SET);
btn_ChangePassword = (Button) rootView
.findViewById(R.id.btn_ChangePassword);
btn_SET.setOnClickListener(this);
btn_ChangePassword.setOnClickListener(this);
return rootView;
}
步骤 4 在 OnCreateView() 之外使用 Id
定义 Onclick() 方法
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_SET:
Toast toast = Toast.makeText(getActivity(), ""+Admin_Email.getText().toString(),
Toast.LENGTH_SHORT);
break;
case R.id.btn_ChangePassword:
break;
default:
break;
}
}
我的完整代码
mport android.annotation.SuppressLint;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Patterns;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
import java.util.regex.Pattern;
public class SettingsFragment extends Fragment implements OnClickListener {
Button btn_SET, btn_ChangePassword;
static EditText Admin_Email;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_settings, container,
false);
Admin_Email = (EditText) rootView.findViewById(R.id.et_admin_email);
btn_SET = (Button) rootView.findViewById(R.id.btn_SET);
btn_ChangePassword = (Button) rootView
.findViewById(R.id.btn_ChangePassword);
btn_SET.setOnClickListener(this);
btn_ChangePassword.setOnClickListener(this);
return rootView;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_SET:
Toast toast = Toast.makeText(getActivity(), ""+Admin_Email.getText().toString(),
Toast.LENGTH_SHORT);
break;
case R.id.btn_ChangePassword:
//
break;
default:
break;
}
}
}
我有类似的东西:
public class EditCustomer extends Fragment implements OnClickListener {
public void onClick(View v) {
//this is what runs when you click the button
EditText editName=(EditText) v.findViewById(R.id.edit_name);
System.out.println(editName.getText()); //FAILS
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment4
View v=inflater.inflate(R.layout.fragment_edit_customer, container, false);
Button a = (Button) v.findViewById(R.id.update_cust_btn);
a.setOnClickListener(this); //adds button listener
EditText editText = (EditText)v.findViewById(R.id.edit_name);
System.out.print(editText.getText().toString());
return v;
}
...
由于某种原因,EditText 中出现空指针异常。当我在同一片段的 onCreateView()
中尝试同一行时,它工作得很好。有什么我没说到的吗?
步骤 1 导入这两个包。
import android.view.View;
import android.view.View.OnClickListener;
步骤 2 在您的 class
中实施 OnClickListenerpublic class SettingsFragment extends Fragment implements OnClickListener
步骤3在onCreateView()中定义Button和EditText;
注意:-全局声明按钮和EditText
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_settings, container,
false);
Admin_Email = (EditText) rootView.findViewById(R.id.et_admin_email);
btn_SET = (Button) rootView.findViewById(R.id.btn_SET);
btn_ChangePassword = (Button) rootView
.findViewById(R.id.btn_ChangePassword);
btn_SET.setOnClickListener(this);
btn_ChangePassword.setOnClickListener(this);
return rootView;
}
步骤 4 在 OnCreateView() 之外使用 Id
定义 Onclick() 方法@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_SET:
Toast toast = Toast.makeText(getActivity(), ""+Admin_Email.getText().toString(),
Toast.LENGTH_SHORT);
break;
case R.id.btn_ChangePassword:
break;
default:
break;
}
}
我的完整代码
mport android.annotation.SuppressLint;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Patterns;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
import java.util.regex.Pattern;
public class SettingsFragment extends Fragment implements OnClickListener {
Button btn_SET, btn_ChangePassword;
static EditText Admin_Email;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_settings, container,
false);
Admin_Email = (EditText) rootView.findViewById(R.id.et_admin_email);
btn_SET = (Button) rootView.findViewById(R.id.btn_SET);
btn_ChangePassword = (Button) rootView
.findViewById(R.id.btn_ChangePassword);
btn_SET.setOnClickListener(this);
btn_ChangePassword.setOnClickListener(this);
return rootView;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_SET:
Toast toast = Toast.makeText(getActivity(), ""+Admin_Email.getText().toString(),
Toast.LENGTH_SHORT);
break;
case R.id.btn_ChangePassword:
//
break;
default:
break;
}
}
}