簡體   English   中英

使用計時器在布局上添加視圖-Android

[英]Add Views on layout with timer - Android

我有一個向活動布局添加按鈕的功能:

void addLeftButton() {
    Button btn = new Button(this);
    int height = 200;
    int width = 300;
    btn.setLayoutParams(new LinearLayout.LayoutParams(width, height));
    btn.setTag(10);
    RelativeLayout layout = (RelativeLayout) findViewById(R.id.activity_main);
    layout.addView(btn);
}

我用這樣的計時器調用此函數:

Timer t = new Timer();
    t.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            addLeftButton();
        }
    },0,10);

由於某些原因,該應用會立即啟動和停止。 如果我從onCreate調用過一次按鈕功能,則可以按預期添加按鈕。

有什么想法為什么用定時器調用不起作用?

我認為nbokmans是正確的,問題應該是因為您嘗試從非UI線程修改UI元素。 可以使用runOnUiThread代替Timer:

    final Handler mHandler = new Handler();
    runOnUiThread(new Runnable() {
        @Override
        public void run() {

            Button btn = new Button(StartActivity.this);
            int height = 200;
            int width = 300;
            btn.setLayoutParams(new LinearLayout.LayoutParams(width, height));
            btn.setTag(10);
            ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.deneme);
            layout.addView(btn);
            mHandler.postDelayed(this, 10);
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM