2012-03-05 54 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