2012-03-05 100 views
0

我是Android開發新手,我想讓應用程序具有標題,正文和頁腳,並通過單擊頁腳中的某個按鈕,將一些佈局加載到正文中。我用here所描述的某種「MasterPage」。 按下按鈕時既沒有加載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

你的代碼是怎麼寫的,它將使使用新的活動更有意義。但是,如果您想將所有視圖保留在一個Activity中,則可以遍歷所有調用mLayout.setVisible(View.VISIBLE)的佈局;或者你可以使用ViewStubs。

至於回答你的問題,爲什麼,你在做什麼是直接添加視圖(及其佈局)到你已經創建和膨脹的內容視圖(你在onCreate中創建的視圖)。您需要首先清除Activities contentView才能查看您使用按鈕所做的更改。

+0

每次點擊創建新活動不會太重,或者我應該讓GC擔心這一點? – theateist 2012-03-05 20:54:45

+0

這取決於你在每個活動中的具體計劃。但是,在所有可能的情況下,不,在GC上它不會太重,或者更準確地說,它不應該干擾用戶體驗。 – AedonEtLIRA 2012-03-05 20:57:45

+0

所有我想要做的是某種標籤(當我想到它了!),當每個標籤有不同的功能,但所有標籤將具有相同的標題,如我的文章中所述。那麼使用'TabHost'(或別的什麼?)會更好,而不是試圖在一個活動中擴充佈局? – theateist 2012-03-05 21:08:57