为什么我的EditText资源在我的Android应用程序中评估为null?

时间:2011-11-29 15:31:07

标签: android dialog android-edittext

所以我有一个接受用户名和密码的对话框,但是当我尝试从EditText对象获取用户名和密码时,我似乎无法真正得到{{1来自资源的对象,我的代码看起来像这样。

EditText

因此,当我在调试中单步执行时,protected Dialog onCreateDialog(int ID){ LayoutInflater factory = LayoutInflater.from(this); final View textEntryView = factory.inflate(R.layout.login_dialogue, null); return new AlertDialog.Builder(this) .setTitle("Login:") .setView(textEntryView) .setPositiveButton("login", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { /* Problem occurs below */ View aView = findViewById(R.id.login_dialogue_username); String username = ((EditText) aView).getText().toString(); String password = ((TextView) findViewById(R.id.login_dialogue_password)).getText().toString(); boolean success = attemptLogin(username, password); } }) .setNegativeButton("cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { /* User clicked cancel so do some stuff */ } }) .create(); } 变量为空,但我看不清楚原因。资源位于我的aView文件中,在eclipse中显示为蓝色,表示它与R文件的名称匹配。有人知道这里发生了什么吗?

3 个答案:

答案 0 :(得分:5)

您正在查看活动的布局。尝试使用

textEntryView.findViewById(R.id.login_dialogue_username);

代替。

答案 1 :(得分:2)

我将走出困境并假设您感兴趣的EditTextR.id.login_dialogue_username)位于从R.layout.login_dialogue充气的布局层次结构中,而不是内容视图整体活动。

如果是这样,您需要使用textEntryView.findViewById(R.id.login_dialogue_username)来查找您要查找的视图。

答案 2 :(得分:0)

您是否尝试过清理并重新编译项目?

有时发生在我身上,似乎在某些条件下,Android会在R类中使用ID。清理和重新编译项目将重新生成R类。