0

各行が 4 つのボタンだけになるように、ユーザーにボタンを追加させたいと思います。だから私は次の関数を書きました:

private void addContact() {
        //numButton Count how many buttons there are in line
        if(numButton==0){
            LinearLayout linearLayout =new LinearLayout(this);
            linearLayout.setOrientation(0);//horizontal
            ImageButton imageButton =new ImageButton(this);
            imageButton.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.button1));
            linearLayout.addView(imageButton);
            LinearLayout linearbase= (LinearLayout)findViewById(R.id.linearBase);
            linearbase.addView(linearLayout);
            numButton++;
        }
        else if(numButton<4)
        {
            LinearLayout linearlayout= ----####Here I do not know what to write!!!!###
            ImageButton imageButton =new ImageButton(this);
            imageButton.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.button1));
            linearlayout.addView(imageButton);
            numButton++;
        }
        else 
        {
            numButton=0;
        }
    }

コード行に問題をマークしました具体的には、この関数への以前の呼び出しで定義された線形レイアウトに新しいボタンを配置する方法ですか? 2 番目の質問: アプリケーションを閉じても新しい状況を維持するにはどうすればよいですか?

4

2 に答える 2

0

初めて LinearLayout を作成するときは、ID を指定します。その後、findViewById() を使用して 2 回目に取得できます。2 番目の質問に答えるには、ブール値をSharedPreferencesに保存します。

于 2012-04-26T22:51:35.513 に答える
0

addContact メソッドの外側で LinearLayouts を宣言するか、そのメソッド内にのみ存在するようにします。私はこのようなものがうまくいくと思います(私はそれをテストしていません):

class myclass{

    private LinearLayout linearLayout;
    private LinearLayout linearbase;
    private int numButton;

    @Override
    public void onFinishInflate() {
        super.onFinishInflate();

        linearbase= (LinearLayout)findViewById(R.id.linearBase);
        LinearLayout linearLayout =new LinearLayout(this);
        linearLayout.setOrientation(0);//horizontal

        numButton=0;
    }

    private void addContact() {
        //numButton Count how many buttons there are in line
        if(numButton==0){

            ImageButton imageButton =new ImageButton(this);
            imageButton.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.button1));
            linearLayout.addView(imageButton);
            linearbase.addView(linearLayout);
            numButton++;
        }
        else if(numButton<4)
        {
            linearLayout= new LinearLayout(this);
            ImageButton imageButton =new ImageButton(this);
            imageButton.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.button1));
            linearlayout.addView(imageButton);
            numButton++;
        }
        else 
        {
            numButton=0;
        }
    }   
}
于 2012-04-26T23:11:30.590 に答える