所以我有一个接受用户名和密码的对话框,但是当我尝试从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文件的名称匹配。有人知道这里发生了什么吗?
答案 0 :(得分:5)
您正在查看活动的布局。尝试使用
textEntryView.findViewById(R.id.login_dialogue_username);
代替。
答案 1 :(得分:2)
我将走出困境并假设您感兴趣的EditText
(R.id.login_dialogue_username
)位于从R.layout.login_dialogue
充气的布局层次结构中,而不是内容视图整体活动。
如果是这样,您需要使用textEntryView.findViewById(R.id.login_dialogue_username)
来查找您要查找的视图。
答案 2 :(得分:0)
您是否尝试过清理并重新编译项目?
有时发生在我身上,似乎在某些条件下,Android会在R类中使用ID。清理和重新编译项目将重新生成R类。