2011-05-15 6 views
2

j'apprends Android et dans un tutoriel, pour ouvrir un nouvel écran qu'ils utilisentutilisez simplement "setContentView" ou "startActivity"?

...

startActivity(new Intent("com.rob.minispy.sweet")); 

(en main.java)

...

public class sweet extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
    } 

} 

(en sweet.java)

...

et enfin

<activity android:name=".sweet" 
      android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.SWEET" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

(dans le manifeste)

maintenant non seulement que cela ne fonctionne pas vraiment et faire le crash de l'application, ne serait-il plus facile de le faire simplement par

setContentView(R.layout.splash); 

de main.java ou y a-t-il des inconvénients?

Merci!

+0

Vous pourriez avoir donné un lien vers le tutoriel pour clarifier les choses. En tout cas, je recommanderais d'apprendre Android à partir du site des développeurs. – primpap

+0

sure: http://www.youtube.com/watch?v=ceWhhyQt-MU&feature=related – Roger

+0

Copie possible de [Android setContentView ou Intents?] (Http://stackoverflow.com/questions/4191997/android-setcontentview- ou-intentions) – jww

Répondre

4

Vous avez 2 façons de commencer l'activité sweet

  1. Changer startActivity(new Intent("com.rob.minispy.sweet")); à startActivity(new Intent("android.intent.action.SWEET")); Voir plus d'informations here
  2. startActivity(new Intent(this,sweet.class)); . Cela utilise le formulaire Intent(Context packageContext, Class<?> cls). Plus d'infos here
+0

merci! "startActivity (nouvelle intention (this, sweet.class))" travaillé! :) mais encore, pourquoi devrais-je commencer une nouvelle activité, si je peux simplement utiliser setContentView? – Roger

+0

Eh bien, vous devrez peut-être initialiser certaines choses lors de l'affichage de votre mise en page (données de DB par exemple). Ainsi, en démarrant une nouvelle activité, vous pouvez l'implémenter dans 'onCreate' – ccheneson

0

Oui, il est préférable de démarrer une nouvelle activité car de cette façon Android va gérer automatiquement les transitions d'une activité à une autre. Votre application se bloque parce que vous ne le faites pas correctement. L'intention devrait être créée comme new Intent(this, com.rob.minispy.sweet.class). Vous utilisez une chaîne dans le constructeur qui est supposée être une action et non une classe.