LayoutInflater和View,一个奇怪的事情

时间:2014-09-30 08:59:24

标签: android android-edittext android-dialog

我注意到Android中有一个奇怪的东西。我不能使用像getText()这样的EditText函数 - 例如,当我输入:

final EditText txtUser = (EditText) inflater.inflate(R.layout.layout_dialog, null).findViewById(R.id.txtUsername);

当我使用时:

View v = inflater.inflate(R.layout.layout_dialog, null);
final EditText txtUser = (EditText) v.findViewById(R.id.txtUsername);
一切正常。我注意到inflater.inflate(R.layout.layout_dialog, null);返回视图,所以当我不使用视图实例时,我不明白为什么我不能使用getText()函数。

谢谢。

1 个答案:

答案 0 :(得分:0)

您正在膨胀自定义对话框。因此,为了使用其组件,首先需要将其初始化为View。 如果要使用其他类的方法,则必须首先创建该类的实例。 在第一个代码中,您尚未将inflater.inflate(R.layout.layout_dialog,null);声明为类型View,因此编译器不知道您打算使用什么。

但在第二段代码中,您已将inflater.inflate(R.layout.layout_dialog,null);声明为View类型,因此您可以使用适用于View类的方法。