9
votes

Puis-je utiliser SetContentView en dehors de la méthode Oncreate?

J'ai vu beaucoup de gens dire que vous pouvez définir SetContentView en dehors de la méthode Oncreate, mais je n'ai trouvé aucun exemple. Maintenant, lorsque j'essaie d'utiliser SetContentView, mon application se bloque simplement. Voici mon code source:

alarcittitivité.java: p> xxx pré>

new_ala.java: p> xxx pré>

t-shirt.xml : p> xxx pré>

sur plus de détails, je peux utiliser setContentView (r.layout.timepicker) à l'intérieur de la méthode Oncreate sans aucun problème, donc le problème est que SetContentView ne fonctionne pas correctement à l'intérieur. la classe new_ala.java. Quelqu'un peut-il m'aider? P>

Le code après avoir défini l'intention: Alarmactivité: P>

package com.alarm.example;
import android.os.Bundle;
public class NewAlarmActivity extends AlarmActivity{

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.timepicker);
}
    }


1 commentaires

"Mon application se bloque simplement" s'il vous plaît poster le logcat avec l'exception


3 Réponses :


4
votes

La meilleure façon de faire est d'avoir plusieurs activités: au lieu de nou1.nou_alarma (); code>, créer une intention et démarrer une nouvelle activité avec la nouvelle mise en page.

startActivity(new Intent(this, NewAlarmActivity.class));


3 commentaires

Merci pour votre réponse. J'ai créé la nouvelle activité mais lorsque j'exécute le programme dans l'émulateur, l'écran devient noir et rien ne se passe. Ce code après la modification est dans la description de ma question


Si vous souhaitez que nous enquêtions sur un accident, vous devez afficher le contenu du logcat, qui montre l'exception.


J'ai trouvé le problème. Le programme a toujours été noir car il n'y avait pas de condition pour commencer la nouvelle intention et juste après le début de la nouvelle intention de la nouvelle intention, est revenue à la méthode principale et ainsi de suite. Maintenant, j'ai résolu le problème et ça marche brillamment. Merci beaucoup.



-4
votes

La méthode setContentView () ne peut être appelée qu'une fois par activité. Si vous souhaitez modifier complètement la mise en page à un moment donné, optez sur ViewFlipper ou avoir 2 dispositions de l'activité et ne figurez que l'une d'elles à l'heure donnée en appelant View.sevisibilité (vue .Gone); et vue.setvisibilité (vue.visible); respectivement.


1 commentaires

La première partie est tout simplement fausse. SetContentView peut être appelé un nombre de fois arbitraire.



10
votes

Vous pouvez appeler SetContentView à tout moment que vous utilisez sur le thread d'événement (UI). Sachez que lorsque vous le faites, tous les champs que vous avez initialisés en appelant wederviewide devront être réinitialisés.


0 commentaires