中使用
我试图从对话框中获得一些值。我有一个名为Splash的活动,显示了一个窗体的对话框。它显示的形式很好,但我给了我一个错误,当我试图得到的值(nullpointer)。
我有以下代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
//datos objeto
nombre = (TextView) findViewById(R.id.tv_nombre);
padre = (TextView) findViewById(R.id.tv_nom_padre);
madre = (TextView) findViewById(R.id.tv_nom_madre);
rgSexo = (RadioGroup) findViewById(R.id.rg_sexo);
fecha_nac = (DatePicker) findViewById(R.id.dp_fecha_nac);
rb_m = (RadioButton) findViewById(R.id.rb_masc);
rb_f = (RadioButton) findViewById(R.id.rb_fem);
perfil = new PerfilCRUD(this);
perfil.open();
//first time
if (perfil.primeraVez()){
//muestro el popup
Log.v(TAG, "prim vez");
Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.dialog_perfil);
dialog.setTitle("Datos del usuario");
dialog.show();
Button botOk = (Button) dialog.findViewById(R.id.b_ok);
botOk.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Log.v(TAG, "boton ok");
Log.v(TAG, nombre.getText().toString());
}
});
当我试图获得nombre.getText(). tostring()值时,它给了我错误。它发生在所有变量/控件值。它强制关闭应用程序。
谢谢! !
这是因为nombre
在您原来的layout
中。在dialog
中调用inflate
,在layout
中调用TextView
,或者在
String name = "";
if (perfil.primeraVez()){
name = nombre.getText().toString();
那么你可以在你的dialog
name