findViewById为EditText返回null

公共类MainActivity扩展活动
 {
     私人EditText editText;

     /** 在第一次创build活动时调用。  * /
     @覆盖
     public void onCreate(Bundle savedInstanceState) 
     {
         super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);

         editText =(EditText)findViewById(R.id.etext);
         if(editText == null)
         {
             Log.v(“editText”,“booohooo”);
         }
        其他
         {
             Log.v(“editText”,“Success”);
         }

         final Button button =(Button)findViewById(R.id.gobutton);

         button.setOnClickListener(new View.OnClickListener(){

             public void onClick(View v) 
             {
                  if(editText!= null)
                  {
                     Log.v(“editText”,“不是NULL”);
                  }
                 其他
                  {
                     Log.v(“editText”,“是NULL :(”);
                  }

                 //点击执行操作
                 if(editText!= null)
                 {
                     editText.getText();
                 }
                其他
                 {
                     Log.v(“editText”,“is NULL”);
                 }
                 Log.v(“url”,editText.getText()。toString()。trim());
                 Intent browserIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(editText.getText()。toString()。trim()));
                 startActivity(browserIntent);
             }
         });
     }
 }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android_id="@+id/websiteurlheading" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Enter web site URL" /> <EditText android_id="@+id/etext" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/websiteurlheading" /> <Button android:id="@+id/gobutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Enter" /> </LinearLayout> 

任何帮助表示赞赏。

Related of "findViewById为EditText返回null"

确保setContentView(R.layout.main); 被设置为正确的布局。 如果你已经做了一个新的(包括上面的XML代码),然后使用它来设置内容视图 – setContentView(R.layout.your_xml_filename);

我几秒钟前面临这个问题,我已经search了几个Stackoverflow的post。 我自己find了解决办法。

只要确保你没有调用editText.getText().toString(); 在onCreate方法中。 因为它只会返回预加载的值。因此,在这种情况下,editext将总是返回null。

改变你的视图中的行

 android_id="@+id/websiteurlheading" android_id="@+id/etext" 

并改变查看ID像这样

 android:id="@+id/websiteurlheading" android:id="@+id/etext" 

例如

 <TextView android:id="@+id/websiteurlheading" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Enter web site URL" /> <EditText android:id="@+id/etext" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/websiteurlheading" /> 

如果用于setContentView函数的布局与EditBox放置的布局不相同,则会发生这种情况。