繁体   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