0

私のアクティビティの 1 つで、Intent からバンドルを受け取ったときに Linear Layout とその他のウィジェットを作成します。現在、そのアクティビティに戻るたびにそのレイアウトが上書きされます。コードを書き直さずに毎回新しいレイアウトを作成するにはどうすればよいですか?

コード:

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);

            }
        });


    }
4

2 に答える 2

0

LinearLayoutsを保持するためのデータ構造を作成するか、毎回追加するViewGroupコンテナーを提供する必要があるようです。

LinearLayout現在、try{} catch(){}ブロック内で同じものを作成、変更、および上書きしています。それが上書きし続ける理由だと思います。

于 2012-06-06T21:38:40.043 に答える
0

私が理解しているように、「最終注文」に新しい「オプション」を追加します。追加のトッピングが追加されるたびに、レイアウトを作成し、特定のデータで埋めます。そして、それを別名 OrderList にしたいのです。このアプリが何に関するものかというと、アプリケーション レベルの変数 myOrder:List を持つことができます。そこにトッピング (トッピング = new Order()) を追加し、FrontPageActivity のリストを読み取ります。注文ごとに別のレイアウトを用意することをお勧めします。注文をループすると、レイアウトにデータが入力され、Activity のコンテナーで膨張します。

擬似のアイデア:

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
}
于 2012-06-06T21:55:25.290 に答える