Impossibile trovare alcuni componenti chiamando findViewById
-
26-10-2019 - |
Domanda
findViewById non può recuperare un pulsante e un radiusBar anche se esiste il loro id. il codice si blocca quando si inizia saveButton o radiusBar.
acticity:
private Button saveButton;
private EditText titleText;
private SeekBar radiusBar;
private TextView radiusValue;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
titleText = (EditText) findViewById(R.id.title);
radiusValue = (TextView) findViewById(R.id.radiusValue);
saveButton = (Button) findViewById(R.id.confirm);
radiusBar = (SeekBar) findViewById(R.id.radiusBar);
file XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="3dp"
android:text="@string/title"
android:textColor="#00ffff"
android:textSize="20sp"
android:textStyle="bold" />
<EditText
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="3dp" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/myLocationText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="3dp"
android:text="@string/hello"
android:textColor="#ffffff"
android:textSize="15sp" />
<com.google.android.maps.MapView
android:id="@+id/myMapView"
android:layout_width="fill_parent"
android:layout_height="300dp"
android:apiKey="my google maps api key"
android:clickable="true"
android:enabled="true"
android:padding="5dp" >
</com.google.android.maps.MapView>
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/radiusText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:paddingLeft="3dip"
android:paddingRight="3dip"
android:text="@string/proximity"
android:textColor="#00ffff"
android:textSize="20sp"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/radiusText" >
<TextView
android:id="@+id/radiusValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="3dip"
android:paddingRight="3dip"
android:text="@string/radius"
android:textColor="#00ffff"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
<SeekBar
android:id="@+id/radiusBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/radiusText"
android:max="1000"
android:padding="5dip"
android:soundEffectsEnabled="true" />
<Button
android:id="@+id/confirm"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/radiusBar"
android:padding="3dp"
android:text="@string/confirm"
android:textSize="20sp" />
</RelativeLayout>
Sono un androide. anche se ho usato vecchia scuola commento fuori modo o DDMS non riuscivo a trovare il motivo per cui questo sta accadendo. grazie per l'aiuto.
Soluzione
Quando si dice "crash", si dovrebbe andare a dire "... e questo è l'uscita del registro con il messaggio di errore". In ogni caso, certamente esistono gli ID delle risorse, come le compilazioni di codice. Tuttavia, un errore di sistema comune di compilazione con Android è che gli ID risorsa può essere sbagliato dopo aver riordinare un po 'XML. Penso che troverete che l'errore è un ClassCastException. La soluzione:. Pulire il pronti contro termine (ad esempio, con ant clean
, o qualche tasto / MENU in Eclipse) e ricompilare tutto da zero
Altri suggerimenti
Ogni volta che ho avuto un problema simile, io di solito potrebbe risolverlo utilizzando il seguente menu in Eclipse: Progetto-> Cancella
È possibile visualizzare un'occhiata alla classe che i progetti Android generano automaticamente
Eclipse è un po ' "troppo" intelligente in questo caso. Si troverà un ID che fa parte di qualsiasi layout. Non solo quello assegnato come il layout setContentView ().
In modo da avere un documento di identità valido, ma non è valida in fase di esecuzione, quando il layout non contiene l'ID.