Impossible de trouver certains composants en appelant findViewById
-
26-10-2019 - |
Question
findViewById ne peut pas récupérer un bouton et un radiusBar même si leur carte d'identité existe. le code se bloque lors de l'initiation saveButton ou 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);
fichier 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>
Je suis nouveau à Android. même si je l'ai utilisé vieux commentaire scolaire à façon ou DDMS je ne pouvais pas trouver pourquoi cela se passe. merci pour l'aide.
La solution
Quand vous dites « crash », vous devriez aller à dire « ... ce qui est la sortie du journal avec le message d'erreur ». Quoi qu'il en soit, les ID de ressources existent certainement, comme vos compiles de code. Cependant, une erreur de système de construction avec Android est que vos identifiants de ressources peuvent être mauvais après vous réorganisez du XML. Je pense que vous constaterez que l'erreur est un ClassCastException. La solution:. Propre votre pension (par exemple, avec ant clean
, ou un bouton / menu dans Eclipse) et tout recompilation à partir de zéro
Autres conseils
Dès que j'avais un problème similaire, généralement je pouvais le résoudre en utilisant le menu suivant dans Eclipse: Projet-> Clean
Vous pouvez voir oeil à la classe que les projets Android génèrent automatiquement
Eclipse est un peu « trop » intelligente dans ce cas. Il trouvera une carte d'identité qui fait partie d'une mise en page. Non seulement celui que vous avez donné que la mise en page setContentView ().
Vous avez une pièce d'identité valide, mais il n'est pas valide lors de l'exécution, lorsque la mise en page ne contient pas l'ID.