在 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。