【问题标题】:setLayout not inflating correct xml layout?setLayout 没有膨胀正确的 xml 布局?
【发布时间】:2019-09-07 13:19:50
【问题描述】:

到目前为止一切正常。我尝试使用文档或查找我的问题。 但是我的 mainActivity 有 4 个按钮。这些按钮取决于单击哪个视图传递 R.id.button。我将此值传递给 Activity2 使用 bundle 获取 id 整数的意图。然后我使用它来设置内容视图。

但是我现在无法获得正确的视图来膨胀,它似乎加载了一个旧的布局。我的目标是根据单击的按钮在 Activity2 上扩展 3 个单独的布局。

我知道我的另一个按钮确实会膨胀另一个活动并获得正确的 xml 布局。 为什么我的其他 3 个按钮在 Activity2 上没有正确充气?

公共类 MainActivity 扩展 AppCompatActivity 实现 View.OnClickListener {

Button pizza;
Button hamburger;
Button icecream;
Button history;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    pizza = findViewById(R.id.buttonPizza);
    hamburger = findViewById(R.id.buttonBurger);
    icecream = findViewById(R.id.buttonIceCream);
    history = findViewById(R.id.buttonHistroy);

    pizza.setOnClickListener(this);
    hamburger.setOnClickListener(this);
    icecream.setOnClickListener(this);
    history.setOnClickListener(this);


}



@Override
public void onClick(View v){

    int idView = v.getId();
    switch(v.getId()) {

        case R.id.buttonBurger : startOrderActivity(R.layout.burger_layout);
            makeToast(idView);
            break;

        case R.id.buttonPizza : startOrderActivity(R.layout.pizza_layout);
            makeToast(idView);
            break;

        case R.id.buttonIceCream : startOrderActivity(R.layout.icecream_layout);
            makeToast(idView);
            break;

        case R.id.buttonHistroy : startOrderActivity(R.layout.history_layout);
            makeToast(idView);
            break;


    }
}

private void startOrderActivity(int id){

    if(id != R.layout.history_layout) {
        Intent intentOrder = new Intent(this, MakeOrderActivity.class);
        intentOrder.putExtra("layout", id);
        startActivity(intentOrder);
    }
    else {
        Intent intentOrder = new Intent(this, OrderHistoryActivity.class);
        intentOrder.putExtra("layout", id);
        startActivity(intentOrder);

    }

}
public void makeToast(int id){
    String txt = String.valueOf(id);
    Toast newToast =  Toast.makeText(getApplicationContext(),txt,Toast.LENGTH_LONG);
    newToast.show();


}

}


公共类 MakeOrderActivity 扩展 AppCompatActivity {

Button placeOrderButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle data = getIntent().getExtras();
    int layoutNum = data.getInt("layout");
    setContentView(layoutNum);
    placeOrderButton = findViewById(R.id.placeOrder);

}

@Override
protected void onStart() {
    super.onStart();


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.order, menu);

    return true;
}


public void onCheckboxClicked(View view){

}

}

【问题讨论】:

    标签: android-layout


    【解决方案1】:

    答案是创建一个由 getInflator 创建的 View。

    https://stackoverflow.com/a/17070408/8443090

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多