Android 如何更改充气机的视图?

Android 如何更改充气机的视图?,android,layout-inflater,Android,Layout Inflater,我想通过单击每个按钮来更改主充气机的充气视图 这是我的源代码 我启动了我的两个按钮,并将Listener设置为两个按钮 但充气机只是显示第一次充气的视图 public class MainActivity extends Activity implements OnClickListener{ //optionmenu int titleHeight; int mainHeight; int menuHeight; //objects TextView tv_status; Tabbar t

我想通过单击每个按钮来更改主充气机的充气视图

这是我的源代码

我启动了我的两个按钮,并将Listener设置为两个按钮

但充气机只是显示第一次充气的视图

public class MainActivity extends Activity implements OnClickListener{

//optionmenu
int titleHeight;
int mainHeight;
int menuHeight;

//objects
TextView tv_status;
Tabbar tb_status;
LinearLayout titleLayout;
LinearLayout mainLayout;
LinearLayout menuLayout;
Button btn1;
Button btn2;

LayoutInflater main_inflater;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    layout_init();
    btn_init();


}   

public void layout_init() {

    DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    int deviceWidth = displayMetrics.widthPixels;
    int deviceHeight = displayMetrics.heightPixels;
    titleHeight = 2*deviceHeight/26;
    mainHeight = 21*deviceHeight/26;
    menuHeight = 3*deviceHeight/26;

    main_inflater = (LayoutInflater) this.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    //initiate Layouts
    titleLayout = (LinearLayout) findViewById(R.id.title_layout);
    mainLayout = (LinearLayout) findViewById(R.id.main_layout);
    menuLayout = (LinearLayout) findViewById(R.id.menu_layout);

    titleLayout.getLayoutParams().height = titleHeight;
    mainLayout.getLayoutParams().height = mainHeight;
    menuLayout.getLayoutParams().height = menuHeight;

    main_inflater.inflate(R.layout.viewpager_layout, mainLayout, true);


}

public void btn_init() {
    btn1 = (Button) findViewById(R.id.button1);
    btn2 = (Button) findViewById(R.id.button2);
    btn1.setOnClickListener(this);
    btn2.setOnClickListener(this);
}


@Override

public void onClick(View v) {
    if(v.getId() == R.id.button1)
    {
        main_inflater.inflate(R.layout.viewpager_layout, mainLayout, false);
    }
    if(v.getId() == R.id.button2)
    {
        main_inflater.inflate(R.layout.person_info, mainLayout, false);}

    Toast.makeText(getBaseContext() , "id : "+v.getId() ,Toast.LENGTH_SHORT ).show();


}
}

祝酒词起作用了。但充气机并没有改变看法。
请告诉我为什么bbbb

充气器只会对视图充气,也就是说,将
viewpager\u layout.xml
的xml转换为实际对象,即
视图
视图
的子类

如果您试图设置整个活动的视图

替换

main_inflater.inflater(R.layout.viewpager_layout, mainLayout, true);
以下是:

setContentView(R.layout.viewpager_layout);

在onClick方法中,传递false作为充气的最后一个参数。这样可以防止膨胀的布局附着到根。 尝试将true作为最后一个参数传递,如下所示:

public void onClick(View v) {
    if(v.getId() == R.id.button1)
    {
        mainLayout.removeAllViews();
        main_inflater.inflate(R.layout.viewpager_layout, mainLayout, true);
    }
    if(v.getId() == R.id.button2)
    {
        mainLayout.removeAllViews();
        main_inflater.inflate(R.layout.person_info, mainLayout, true);
    }
    Toast.makeText(getBaseContext() , "id : "+v.getId() ,Toast.LENGTH_SHORT ).show();    
}

你说的3种布局是什么意思?一个活动一次只能有一个布局,在该布局中将有子视图。哦,对不起,你说得对。也许正如您所说,将充气机改为setContentView是一种解决方案。非常感谢。但每个版面都包含相同的标题布局和相同的菜单。。。这听起来像是低效的meCan你可以尝试删除主布局中的所有视图,然后再膨胀到它?我已经相应地更新了代码。