Android EditText为空

Android EditText为空,android,android-edittext,Android,Android Edittext,我不明白为什么我的EditText为空 public ChoiceView(Context context) { super(context); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); final View view = inflater.inflate(R.layout.choice

我不明白为什么我的EditText为空

public ChoiceView(Context context) {
        super(context);

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final View view = inflater.inflate(R.layout.choice_view, this, true);

        Log.d("TEST CHOICEVIEW", "1");
        et = (EditText) view.findViewById(R.id.enterChoice);
        if (et == null) Log.d("TEST CHOICEVIEW", "null"); // << this always produces "null" in Logcat
        tv = (TextView) findViewById(R.id.choiceViewTextView);
        Log.d("TEST CHOICEVIEW", "2");
        choiceString = et.getText().toString();
        Log.d("TEST CHOICEVIEW", "3");
        tv.setText(choiceString);

        Log.d("TEST CHOICEVIEW", "4");

        requestLayout();
    }
如果您需要任何其他信息,请告诉我。谢谢

其他信息:

  • ChoiceView通过以下代码从ChoiceList类调用:

    Context context = ChoiceList.this;
    ChoiceView cv = new ChoiceView(context);
    

您是否尝试过膨胀视图(假设您发布的代码位于
code\u视图
)而不将其附加到视图组?像这样:

final View view = inflater.inflate(R.layout.choice_view, null);

过去给我带来了很大的麻烦。

您需要将尝试引用的组件包含在正在膨胀的XML布局中

在我看来,您正在尝试引用多个XML文件中的视图(EditText)。这是不恰当的

这就是为什么找不到要查找的视图-choiceViewTextView
它不在choice_view.xml文件(您正在膨胀的文件)中。更改此调用以引用layout.xml文件(您没有指定此文件的名称)将解决您的问题。

是否确定
R.layout.choice\u view
是包含编辑文本的文件?您没有标记布局的文件名。在choice\u view布局中是否输入choice?我们是否可以看到正在实例化ChoiceView的代码?如果ChoiceView正在膨胀,请使用其他构造函数。“TEST ChoiceView 1”从何而来?您的意思是像而不是编写
最终视图=膨胀器。膨胀(R.layout.choice\u view,null)我只写
充气器。充气(R.layout.choice\u视图,空)
以后只调用
findviewbyd()
而不是
view.findviewbyd()
?如果你是这个意思,那么是的,我试过了。事实上,我只是添加了视图部分,因为之前的线程似乎坚持要添加它。你太棒了。非常感谢!我为包含EditText的xml文件添加了一个新的充气器,它可以正常工作。我正在自学如何从头开始编写android应用程序,所以我想我错过了一些类似这样的基础知识。无论如何,再次谢谢你!很高兴能提供帮助,XML和Java之间的脱节一开始令人困惑,但从长远来看是有意义的,值得一开始就这么麻烦。
TEST CHOICEVIEW 1
TEST CHOICEVIEW null
TEST CHOICEVIEW 2
AndroidRuntime Shutting down VM
Context context = ChoiceList.this;
ChoiceView cv = new ChoiceView(context);
final View view = inflater.inflate(R.layout.choice_view, null);