2012-03-05 4 views
0

Je suis nouveau dans le développement Android et je voulais faire une application qui a l'en-tête, le corps et le pied de page et en cliquant sur l'un des boutons dans le pied de page une disposition sera chargée dans le corps. J'ai utilisé une sorte de "MasterPage" comme décrit here. Lorsque le bouton est enfoncé, aucune mise en page new_exercise ou mise en page exercises n'est chargée. Pourquoi? Peut-être qu'au lieu de tout cela, je devrais utiliser n'importe quel type d'onglets? Ou peut-être je ne peux pas gonfler la mise en page et devrait créer une nouvelle activité?Pourquoi gonfler la mise en page dans une autre mise en page d'Android?

Voici le code de l'activité BaseActivity et NewExercise:

public class BaseActivity extends Activity{ 
    LinearLayout linBaseBody; 

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

     linBaseBody = (LinearLayout)findViewById(R.id.base_body); 

     initButtons(); 
    } 
    @Override 
    public void setContentView(int id) { 
     LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     inflater.inflate(id, linBaseBody); 
    } 

    private void initButtons() 
    { 
     Button btn1 = (Button) findViewById(R.id.newEx); 
     btn1.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View view) { 
        setContentView(R.layout.new_exercise); 
       } 
     }); 
     Button btn2 = (Button) findViewById(R.id.showAllEx); 
     btn2.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View view) { 
        setContentView(R.layout.exercises); 
       } 
     }); 
    } 

public class NewExercise extends BaseActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     super.setContentView(R.layout.new_exercise); 
    } 
} 
public class Exercises extends BaseActivity {  
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);   
     setContentView(R.layout.exercises); 
    }  
} 

Répondre

1

Comment votre code est écrit, il serait plus judicieux d'utiliser une nouvelle activité. Cependant, si vous souhaitiez conserver toute la vue dans une activité, vous pouvez parcourir toutes vos présentations en appelant mLayout.setVisible (View.VISIBLE); ou vous pouvez utiliser ViewStubs. Pour répondre à votre question, pourquoi, ce que vous faites est d'ajouter la vue (et leurs mises en page) directement à votre vue de contenu déjà créée et gonflée (celle que vous avez créée dans onCreate). Vous devez d'abord effacer le Contenu Activités pour voir les modifications que vous effectuez avec le bouton.

+0

Créer une nouvelle activité à chaque clic ne sera pas trop lourd ou je devrais laisser à GC de s'inquiéter à ce sujet? – theateist

+0

Cela dépend de ce que vous comptez faire exactement dans chacune des Activités. Mais dans tous les cas, non, il ne sera pas trop lourd sur le GC, ou plus exactement, il ne devrait pas interférer avec l'expérience de l'utilisateur. – AedonEtLIRA

+0

Tout ce que je voulais faire est une sorte d'onglets (comme je pense à ce sujet maintenant!) Lorsque chaque onglet a des fonctionnalités différentes, mais tous les onglets auront le même en-tête comme décrit dans mon message. Alors sera-t-il préférable d'utiliser TabHost (ou quelque chose d'autre?) Au lieu d'essayer de gonfler la mise en page au sein d'une activité? – theateist

Questions connexes