2017-10-19 102 views
0

现在我感觉真的很笨,我真的希望生病能找到这样的解决方案。对话框中的android edittext返回null

我想要做的事情:警报有一个edittext,这个edittext的输入将用于下一个活动 我的问题是字符串测试总是空的。我究竟做错了什么?

public void CalibrateButtonClicked(View v) { 
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
LayoutInflater inflater = this.getLayoutInflater(); 

final View dialogView = inflater.inflate(R.layout.dialog, null); 
builder.setMessage("calibration"); 


builder.setView(dialogView) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // startActivity(new Intent(FaceMenu.this, FaceTrackerActivity.class)); 
       EditText edit = (EditText)dialogView.findViewById(R.id.editText2); 
       String test= edit.getText().toString(); 
       Intent intent = new Intent(getBaseContext(), FaceTrackerActivity.class); 
       intent.putExtra("EXTRA_SESSION_ID", test); 
       startActivity(intent); 

      } 
     }) 
     .create().show(); 
} 
+0

的'EditText'为空,或者'gettext的()的toString()'返回一个空'String'? –

+0

test为null,意味着getText()。toString()也为null – user9821

+0

'getText()。toString()'不会返回null。它可能会返回一个空的'String',但这不是一回事。它是返回一个空的'String',还是在那里崩溃? –

回答

0

初始化您EditText外面你setPositiveButton

像:

public void CalibrateButtonClicked(View v) { 
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
LayoutInflater inflater = this.getLayoutInflater(); 

final View dialogView = inflater.inflate(R.layout.dialog, null); 
final EditText edit = (EditText)dialogView.findViewById(R.id.editText2); 

builder.setMessage("calibration"); 
builder.setView(dialogView) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // startActivity(new Intent(FaceMenu.this, FaceTrackerActivity.class)); 
       String test= edit.getText().toString(); 
       Intent intent = new Intent(getBaseContext(), FaceTrackerActivity.class); 
       intent.putExtra("EXTRA_SESSION_ID", test); 
       startActivity(intent); 

      } 
     }) 
     .create().show(); 
} 
0

你可以尝试把视图绑定出OnClickListener吗?

public void CalibrateButtonClicked(View v) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 

    final View dialogView = View.inflate(R.layout.dialog, null); 
    EditText edit = (EditText) dialogView.findViewById(R.id.editText2); 

    builder.setMessage("calibration"); 
    builder.setView(dialogView) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
      // startActivity(new Intent(FaceMenu.this, FaceTrackerActivity.class)); 
      String test= edit.getText().toString(); 
      Intent intent = new Intent(getBaseContext(), FaceTrackerActivity.class); 
      intent.putExtra("EXTRA_SESSION_ID", test); 
      startActivity(intent); 

      } 
     }) 
     .create().show(); 
    }