2014-09-30 77 views
-1

我注意到了Android中的一个奇怪的事情。我不能使用的EditText功能,如getText() - 例如,当我输入:LayoutInflater和View,奇怪的事

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()函数,当我不使用视图实例。

谢谢。

+0

你不明白什么? – Blackbelt 2014-09-30 09:00:25

+2

可能是因为View没有这种方法。 – Aniruddha 2014-09-30 09:03:27

回答

0

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

但在第二个代码中,您宣布您的inflater.inflate(R.layout.layout_dialog,null);View类型,因此您可以使用适用于View类的方法。