2010-09-14 3 views
0

Je suis très nouveau pour le développement Android. J'essaie un exemple d'application et il génère un bouton dynamiquement en utilisant Java et cela fonctionne très bien.Pourquoi cette application Android basée sur la mise en page XML plante-t-elle?

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    btn=new Button(this); 
    btn.setOnClickListener(this); 
    updateTime(); 
    setContentView(btn); 
    } 

Cela fonctionne très bien dans mon émulateur. Cependant, lorsque j'essaie de faire avec une mise en page basée sur XML, mon application se bloque dans l'émulateur.

Main.XML contenu

<?xml version="1.0" encoding="utf-8"?> 
<Button xmlns:android="com.testing" 
    android:id="@+id/button" 
    android:text="" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

code:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     btn=(Button)findViewById(R.id.button); 
     btn.setOnClickListener(this); 
     updateTime(); 

    } 

Est-ce que quelqu'un sait pourquoi cette application simple se bloque en raison de la mise en page XML? Thanx beaucoup d'avance :)

Répondre

1

Essayez:

<?xml version="1.0" encoding="utf-8"?> 
<Button 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/button" 
    android:text="" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

Quoi qu'il en soit ... il vous aidera si vous postez votre sortie logcat.

+0

Oui! Cela semble être le problème ... Mais je me demande pourquoi je ne peux pas utiliser mon propre espace de noms. Est-ce une sorte d'espace de noms constant qui ne peut pas être changé? Ou est-ce parce que cela est lié à quelque chose qui devrait également être modifié pour que l'application fonctionne? –

1

Cette ligne:

xmlns:android="com.testing" 

devrait pointe vers le XML namespace Android ... PAS votre nom de package.

xmlns:android="http://schemas.android.com/apk/res/android" 

Vous pouvez cependant renommer le mot android à quelque chose d'autre à condition que la valeur d'attribut reste le même.

+0

Merci beaucoup. Ceci est utile :) –

Questions connexes