Android Studio中的对话创建错误



我正在遇到此错误 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。

最新更新