在我的一个活动中,当从Intent收到包时,我创建了一个Linear Layout和一些其他Widgets。目前,每次我回到该活动时,该布局都会被覆盖。如何在不重写代码的情况下每次创建新的布局?
CODE:
public class FrontPageActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.frontpage);
Bundle bundle = this.getIntent().getExtras();
try{
String size = bundle.getString("size");
int toppcount = bundle.getStringArrayList("toppings").toArray().length;
LinearLayout container = (LinearLayout)findViewById(R.id.container);
TextView t = new TextView(this);
TextView tprice = new TextView(this);
tprice.setGravity(Gravity.RIGHT);
LinearLayout inner = new LinearLayout(this);
LinearLayout.LayoutParams innerparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
inner.setLayoutParams(innerparams);
inner.setBackgroundDrawable(getResources().getDrawable(R.drawable.background));
inner.setPadding(10,10,10,10);
if(toppcount == 0){
t.setText(size+" Cheese Pizza");
}
else{
t.setText(size+" "+toppcount+" Topping Pizza");
}
tprice.setText(getPrice(size, toppcount)+"");
tprice.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT));
container.addView(inner);
inner.addView(t);
inner.addView(tprice);
}
catch(NullPointerException e){
}
final Intent sender = new Intent(this.getApplicationContext(), OrderPizzaActivity.class);
Button badd = (Button)findViewById(R.id.buttonaddpizza);
badd.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
startActivityForResult(sender, 0);
}
});
}
答案 0 :(得分:0)
听起来您需要创建一个数据结构来保存LinearLayouts,或者提供一个ViewGroup容器,以便每次都添加它们。
目前,您正在创建,修改,然后覆盖LinearLayout
块中的相同try{} catch(){}
。我猜这就是它一直被覆盖的原因。
答案 1 :(得分:0)
据我了解,您在“最终订单”中添加了新的“选项”。每次添加额外的顶部时,您都会创建一个布局并用特定数据填充它。而你希望它也是OrderList。如果这个应用程序是关于什么的,你可以有一个应用程序级变量myOrder:List。在FrontPageActivity中添加toppings(topping = new Order())和读取列表。 建议您为订单单独布局。通过订单循环使用数据填充布局并在活动容器中膨胀。
伪的想法:
MyApplication extends Application {
private static List<Order> mOrderList = null;
public MyApplication(){
mOrderList = new ArrayList<Order>();
}
public static List<Order> getOrderList(){
return mOrderList();
}
public static void addOrder(Order order) {
mOrderList.add(order);
}
}
选项活动:
MyApplication.add(order);
MyApplication.add(order);
FrontPageActivity
foreach(Order order : MyApplication.getOrderList()) {
// fill layout with order data
// inflate orderLayout into container
}