2012-03-05 14 views
0

私はAndroid開発で新しく、ヘッダー、ボディー、フッターを持つアプリケーションを作成したいと思っていました。フッターのボタンの1つをクリックすると、レイアウトが本体に読み込まれます。私はhereと記載されているような何らかの「マスターページ」を使用しました。 ボタンを押すとnew_exerciseレイアウトもexercisesレイアウトもロードされません。どうして?たぶんこのすべての代わりに私はどのような種類のタブを使用する必要がありますか?レイアウトを膨らませることができず、新しいアクティビティを作成する必要がありますか?Androidで別のレイアウトにレイアウトを拡張する理由

ここBaseActivityと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); 
    }  
} 

答えて

1

、それが新しいアクティビティを使用する方が理にかなって。ただし、すべてのビューを1つのアクティビティに保持したい場合は、すべてのレイアウトを歩き、mLayout.setVisible(View.VISIBLE)を呼び出します。 ViewStubを使用することもできます。

あなたの質問に答えるには、作成したコンテンツビュー(onCreateで作成したコンテンツビュー)に直接ビュー(およびそのレイアウト)を追加する必要があります。アクティビティのcontentViewをクリアしてから、ボタンを使って行った変更を確認する必要があります。

+0

クリックごとに新しいアクティビティを作成することはあまり重すぎないでしょうか、それとも気にする必要がありますか? – theateist

+0

これは、それぞれのアクティビティで何をする予定であるかによって異なります。しかし、すべての可能性のあるフードでは、いいえ、それはGCで重すぎることはありません、またはより正確に、それはユーザーの経験を妨げるべきではありません。 – AedonEtLIRA

+0

私がしたかったのは、それぞれのタブの機能が異なるが、すべてのタブに自分の投稿に記載されているものと同じヘッダが付いているような、ある種のタブです(私は今考えています)。したがって、1つのアクティビティ内でレイアウトを膨張させる代わりに、 'TabHost'(または何か他のもの)を使用する方が良いでしょうか? – theateist

関連する問題