android - style - findViewById devuelve null para EditText
propiedades edittext android (4)
public class MainActivity extends Activity { private EditText editText; /** Called when the activity is first created. */ @Override 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"); } else { 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", "is not NULL"); } else { Log.v("editText", "is NULL :("); } // Perform action on click if(editText != null) { editText.getText(); } else { 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>
Cualquier ayuda es apreciada.
Asegúrese de que setContentView(R.layout.main);
se establece en el diseño correcto. Si ha creado uno nuevo (que incluye el código xml anterior), utilícelo para establecer la vista de contenido - setContentView(R.layout.your_xml_filename);
Estaba enfrentando este problema hace unos segundos y había buscado algunas publicaciones de . Encontré la solución yo mismo.
Solo asegúrate de no estar llamando a editText.getText().toString();
en el método onCreate. Porque solo devolverá los valores precargados. Por lo tanto, editext siempre devolverá nulo en este caso.
cambia las líneas en tus Vistas
android_id="@+id/websiteurlheading"
android_id="@+id/etext"
y cambiar la Id. de vista como esta
android:id="@+id/websiteurlheading"
android:id="@+id/etext"
p.ej
<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"
/>
Esto sucede si el diseño utilizado para la función setContentView no es el mismo que su diseño colocado en EditBox.