通过自定义对话框中的方法访问 EditText 文本 class
access EditText text by method from custom dialog class
我有这个自定义 alertDialog class 并且我定义了一个 setText() 方法来设置 EditText 文本:
public class CustomEditDialog extends AlertDialog {
private Context context;
private CustomEditText editTextTv;
private CustomTextView titleTv;
public CustomEditDialog(Context context) {
super(context);
this.context = context;
}
public CustomEditDialog(Context context, int themeResId) {
super(context, themeResId);
this.context = context;
}
protected CustomEditDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
this.context = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.editbox_dialog_layout);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
titleTv = (CustomTextView)findViewById(R.id.title_tv);
editTextTv = (CustomEditText)findViewById(R.id.edit_text_et);
}
public void setText(CharSequence text){
editTextTv.setText(text);
}
public String getText(){
return editTextTv.getText().toString();
}
}
现在,当我在 activity 中使用我的 CustomEditDialog 并访问 setText() 方法来填充编辑文本时:
CustomEditDialog customEditDialog = new CustomEditDialog(context);
customEditDialog.setText("OK!!");
customEditDialog.show();
我收到这个错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.k.kh.CustomEditText.setText(java.lang.CharSequence)' on a null object reference
请帮帮我。
您收到此错误是因为您试图在创建它之前调用 editTextTv.setText()。
要修复它,您必须先调用 .show() 来调用 onCreate() 并初始化 CustomEditDialog 视图:
CustomEditDialog customEditDialog = new CustomEditDialog(context);
customEditDialog.show();
customEditDialog.setText("OK!!");
我有这个自定义 alertDialog class 并且我定义了一个 setText() 方法来设置 EditText 文本:
public class CustomEditDialog extends AlertDialog {
private Context context;
private CustomEditText editTextTv;
private CustomTextView titleTv;
public CustomEditDialog(Context context) {
super(context);
this.context = context;
}
public CustomEditDialog(Context context, int themeResId) {
super(context, themeResId);
this.context = context;
}
protected CustomEditDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
this.context = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.editbox_dialog_layout);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
titleTv = (CustomTextView)findViewById(R.id.title_tv);
editTextTv = (CustomEditText)findViewById(R.id.edit_text_et);
}
public void setText(CharSequence text){
editTextTv.setText(text);
}
public String getText(){
return editTextTv.getText().toString();
}
}
现在,当我在 activity 中使用我的 CustomEditDialog 并访问 setText() 方法来填充编辑文本时:
CustomEditDialog customEditDialog = new CustomEditDialog(context);
customEditDialog.setText("OK!!");
customEditDialog.show();
我收到这个错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.k.kh.CustomEditText.setText(java.lang.CharSequence)' on a null object reference
请帮帮我。
您收到此错误是因为您试图在创建它之前调用 editTextTv.setText()。 要修复它,您必须先调用 .show() 来调用 onCreate() 并初始化 CustomEditDialog 视图:
CustomEditDialog customEditDialog = new CustomEditDialog(context);
customEditDialog.show();
customEditDialog.setText("OK!!");