自定义对话框中设置TextView

8
我创建了一个自定义对话框,但我无法从Java中将文本设置到对话框布局中的文本视图中,导致程序崩溃。我犯了什么错误?
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");
2个回答

5

更改

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

to

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

TextView titel = (TextView) dialog.findViewById(R.id.dialog_edit_text_title); 给我返回了 java.lang.null pointer exception。 - Jack

1
您正在尝试在对话框显示之前设置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();
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接