在 Android Studio 中创建对话框时出错
ERROR on dialog creation in Android Studio
我遇到了这个错误java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
我尝试在设置文本后更改 setContentView,但没有成功。
即使我搜索了也找不到我做错了什么。
这是我创建的对话框。当我从 textview 设置文本时出现错误。
public void forgetDialog() {
final Dialog dialog = new Dialog(this); // Context, this, etc.
dialog.setTitle(R.string.dialog_title2);
// dialog.setOnDismissListener(dialog.dismiss(););
dialog.setContentView(R.layout.dialog);
TextView txv = (TextView)findViewById(R.id.dialog_info);
txv.setText("");
txv.setText("You forgot to add the ingredients!");
dialog.show();
btn_dialog = (Button) dialog.findViewById(R.id.dialog_ok) ;
btn_dialog.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
dialog.cancel();
}
});
}
这是我正在使用的xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/dialog_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="@string/dialog_text"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_below="@id/dialog_info">
<Button
android:id="@+id/dialog_ok"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.50"
android:background="@color/dialog_ok_bgcolor"
android:text="Ok, got it"/>
</LinearLayout>
</RelativeLayout>
第一步
写两个单独的文件xml,一个用于activity的布局(activity.xml),一个用于对话框的布局(dialog.xml)。确保您的 dialog.xml 包含您需要的 TextView 和 Button。
第二步
声明
Button btn_dialog;
TextView txv;
在我放入下一步的代码之前。
第三步
试试这个代码,我试过了,它成功了。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
forgetDialog();
}
public void forgetDialog() {
final Dialog dialog = new Dialog(this); // Context, this, etc.
dialog.setTitle("Title");
// dialog.setOnDismissListener(dialog.dismiss(););
dialog.setContentView(R.layout.dialog);
txv = (TextView) dialog.findViewById(R.id.dialog_info);
txv.setText("");
txv.setText("You forgot to add the ingredients!");
dialog.show();
btn_dialog = (Button) dialog.findViewById(R.id.dialog_ok);
btn_dialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.cancel();
}
});
}
我认为错误是:
1) 布局管理;
2) 你忘了告诉你想在哪个View中找到TextView的id。
我遇到了这个错误java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
我尝试在设置文本后更改 setContentView,但没有成功。 即使我搜索了也找不到我做错了什么。
这是我创建的对话框。当我从 textview 设置文本时出现错误。
public void forgetDialog() {
final Dialog dialog = new Dialog(this); // Context, this, etc.
dialog.setTitle(R.string.dialog_title2);
// dialog.setOnDismissListener(dialog.dismiss(););
dialog.setContentView(R.layout.dialog);
TextView txv = (TextView)findViewById(R.id.dialog_info);
txv.setText("");
txv.setText("You forgot to add the ingredients!");
dialog.show();
btn_dialog = (Button) dialog.findViewById(R.id.dialog_ok) ;
btn_dialog.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
dialog.cancel();
}
});
}
这是我正在使用的xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/dialog_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="@string/dialog_text"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_below="@id/dialog_info">
<Button
android:id="@+id/dialog_ok"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.50"
android:background="@color/dialog_ok_bgcolor"
android:text="Ok, got it"/>
</LinearLayout>
</RelativeLayout>
第一步
写两个单独的文件xml,一个用于activity的布局(activity.xml),一个用于对话框的布局(dialog.xml)。确保您的 dialog.xml 包含您需要的 TextView 和 Button。
第二步
声明
Button btn_dialog;
TextView txv;
在我放入下一步的代码之前。
第三步
试试这个代码,我试过了,它成功了。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
forgetDialog();
}
public void forgetDialog() {
final Dialog dialog = new Dialog(this); // Context, this, etc.
dialog.setTitle("Title");
// dialog.setOnDismissListener(dialog.dismiss(););
dialog.setContentView(R.layout.dialog);
txv = (TextView) dialog.findViewById(R.id.dialog_info);
txv.setText("");
txv.setText("You forgot to add the ingredients!");
dialog.show();
btn_dialog = (Button) dialog.findViewById(R.id.dialog_ok);
btn_dialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.cancel();
}
});
}
我认为错误是:
1) 布局管理;
2) 你忘了告诉你想在哪个View中找到TextView的id。