read user Input of custom dialogs
- by urobo
I built a custom dialog starting from an AlertDialog to obtain login information from a user.
So the dialog contains two EditText fields, using the layoutinflater service I obtain the layout and I'm saving a reference to the fields.
LayoutInflater inflater = (LayoutInflater) Home.this.getSystemService(LAYOUT_INFLATER_SERVICE);
layoutLogin = inflater.inflate(R.layout.login,(ViewGroup) findViewById(R.id.rl));
usernameInput =((EditText)findViewById(R.id.getNewUsername));
passwordInput = ((EditText)findViewById(R.id.getNewPassword));
Then I have my overridden onCreateDialog(...) :
{
AlertDialog d = null;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
switch(id){
...
case Home.DIALOG_LOGIN:
builder.setView(layoutLogin);
builder.setMessage("Sign in to your DyCaPo Account").setCancelable(false);
d=builder.create();
d.setTitle("Login");
Message msg = new Message();
msg.setTarget(Home.this.handleLogin);
Bundle data = new Bundle();
data.putString("username", usernameInput.getText().toString());// <---null pointer Exception
data.putString("password", passwordInput.getText().toString());
msg.setData(data);
d.setButton(Dialog.BUTTON_NEUTRAL,"Sign in",msg);
break;
...
return d;
}
and the handler set in the Message:
private Handler handleLogin= new Handler(){
/* (non-Javadoc)
* @see android.os.Handler#handleMessage(android.os.Message)
*/
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
Log.d("Message Received", msg.getData().getString("username")+ msg.getData().getString("password"));
}
};
which for now works as a debugging tool.
That's all. The Question is: what am I doing wrong? Because when I reach the line highlighted in the code ( the line in which I read the fields in the dialog ) I always get a null pointer exception. Could somebody please tell me the reason why it is so? And give some guidelines to work with dialogs.
Thanks in advance!