我正在遇到此错误 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
设置文本后,我尝试更改setContentView,但没有运气。我找不到我在做错什么,甚至以为我搜索了。
这是我的对话创建。当我从文本视图中设置文本时,出现了错误。
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.xml ),一个用于对话框的布局( dialog.xml )。确保您的 dialog.xml 包含您需要的文本视图和按钮。
第二步
声明
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)您已经忘记了要在哪种视图中找到文本视图的ID。