1

このコードを作成したいのですが、ボタンが1つありますが、そのボタンをクリックするとタイマーが開始します。タイマーがチェックされるたびに、main.xmlにボタンが作成されます。どうすればよいですか。助けてください!

  Button a = (Button) findViewById(R.id.button1);
 a.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        new CountDownTimer(5000,1000) {

            @Override
            public void onTick(long millisUntilFinished) {
                // TODO Auto-generated method stub
                //how to create a button here!
            }

            @Override
            public void onFinish() {
                // TODO Auto-generated method stub

            }
        }.start();
    }
});

これを試してみましたが、ボタンをクリックするとこの単語が表示されます(「残念ながらプログラムが停止しました」)

  final int i=1;
    Button a = (Button) findViewById(R.id.button1);
    a.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        new CountDownTimer(5000,1000) {

            @Override
            public void onTick(long millisUntilFinished) {
                // TODO Auto-generated method stub
                //how to create a button here!
                LinearLayout linearLayout = (LinearLayout) findViewById(R.layout.main);
                Button btn = new Button(NyaActivity.this);
                btn.setId(i+1);
                linearLayout.addView(btn);
                btn.setText("Button"+(i+1));
                final int index = i;
                btn.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Log.i("TAG", "The index is" + index);
                    }
                });


            }

            @Override
            public void onFinish() {
                // TODO Auto-generated method stub

            }
        }.start();
    }
});
}
4

2 に答える 2

0

CountDownTimer onTickのアクションでボタンを動的に追加するには、次の方法を試してください。

    int i=1;
    Button a = (Button) findViewById(R.id.button1);
    a.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        new CountDownTimer(5000,1000) {

            @Override
            public void onTick(long millisUntilFinished) {
                // TODO Auto-generated method stub
                //how to create a button here!
                LinearLayout linearLayout = (LinearLayout) findViewById(R.id.mainlauoutid);
                Button btn = new Button(Your_Current_Activity.this);
                btn.setId(i+1);
                btn.setText("Button"+(i+1));
                btn.setLayoutParams(lprams);
                final int index = i;
                btn.setOnClickListener(new OnClickListener() {
                    void onClick(View v) {
                        Log.i("TAG", "The index is" + index);
                    }
                });
                linearLayout.addView(btn);
            }

            @Override
            public void onFinish() {
                // TODO Auto-generated method stub

            }
        }.start();
    }
});

レイアウトは次のようになります。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainlauoutid"
    android:orientation="vertical" >
.....
于 2012-06-03T16:14:06.513 に答える
0

main.xmlにLinearLayoutを作成し、以下を使用してa.setOnClickListenerの前に見つけます。

final LinearLayout layout = (LinearLayout) findViewById(R.id.layoutId);

次に、onTick()で次を呼び出します。

Button newBtn = new Button(YourActivity.this);
newBtn.setText("new button");
layout.addView(newBtn);
于 2012-06-03T16:18:06.337 に答える