【问题标题】:set textview in custom dialog在自定义对话框中设置文本视图
【发布时间】:2026-01-11 14:35:01
【问题描述】:

我已经创建了一个自定义对话框,但是我无法在 java 对话框布局中的 textview 中设置文本,并且我的程序崩溃了。我的错误是什么?

public class Total_CBC extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.total_cbc);
    final TextView RBC_T = (TextView) findViewById(R.id.total_cbc_text_rbc);

    Button RBC_B = (Button) findViewById(R.id.total_cbc_btn_rbc);

    //

    RBC_B.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            showCustomDialog(RBC_T);
        }
    });
}


protected void showCustomDialog(final TextView _RBC_T) {
    final Dialog dialog = new Dialog(Total_CBC.this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.dialog_edit);
    final EditText editText = (EditText) dialog.findViewById(R.id.dialog_edit_edittext);
    Button button = (Button) dialog.findViewById(R.id.dialog_edit_btn);
    TextView titel = (TextView) findViewById(R.id.dialog_edit_text_title);
    titel.setText("RBC");
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            _RBC_T.setText(editText.getText().toString());
            dialog.dismiss();
        }
    });
    dialog.show();
}

}当我删除这条线程序工作但我需要设置文本

titel.setText("RBC");

【问题讨论】:

    标签: android dialog


    【解决方案1】:

    改变

     TextView titel = (TextView) findViewById(R.id.dialog_edit_text_title);
    

     TextView titel = (TextView) dialog.findViewById(R.id.dialog_edit_text_title);
    

    【讨论】:

    • TextView 标题 = (TextView) dialog.findViewById(R.id.dialog_edit_text_title);给我 java.lang.null 指针异常
    【解决方案2】:

    您试图在显示对话框之前设置 TextView 的文本,这就是它返回 null 的原因。 正确的做法是在对话框创建后设置文本:

    把它放到你的自定义对话框中

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            TextView titel = (TextView)dialog.findViewById(R.id.dialog_edit_text_title);
            titel.setText("RBC");
            return builder.create();
        }
    

    【讨论】: