我是Android开发的新手,我想创建具有页眉,正文和页脚的应用程序,通过点击页脚中的一个按钮,一些布局将被加载到正文中。我使用了某种" MasterPage"正如here所述。
按下按钮时,既未加载new_exercise
布局也未加载exercises
布局。为什么?也许不是所有这些我应该使用任何类型的标签?或者也许我不能夸大布局并应该创建新的活动?
这里是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);
}
}
答案 0 :(得分:1)
如何编写代码,使用新的Activity会更有意义。但是,如果您想将所有视图保留在一个Activity中,则可以遍历所有调用mLayout.setVisible(View.VISIBLE)的布局;或者你可以使用ViewStubs。
至于回答你的问题,为什么,你正在做的是将视图(和它们的布局)直接添加到你已创建和膨胀的内容视图(你在onCreate中创建的视图)。您需要首先清除活动内容视图以查看您使用按钮所做的更改。