簡體   English   中英

如何每秒自動單擊Android中的按鈕

[英]How to automatically Click a Button in Android Every Second

延遲5秒后如何自動在Android中單擊按鈕

我嘗試使用鏈接中輸入的代碼,但是我的應用程序崩潰了。

 public class MainActivity extends AppCompatActivity {
    Button button;
    TextView text;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        try {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            buttonClick();
            Thread timer = new Thread() {
                public void run() {
                    try {
                        sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } finally {
                        button.performClick();

                    }
                }
            };
            timer.start();
        } catch (Resources.NotFoundException e) {
            e.printStackTrace();
        }
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                button.performClick();
            }
        }, 1000);

    }

    public void buttonClick() {
        button=(Button) findViewById(R.id.button);
        text=(TextView) findViewById(R.id.text);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Random s=new Random();
                int number=s.nextInt(3);
                switch (number)
                {case 1:text.setText("1");
                    break;
                    case 2: text.setText("2");
                        break;


                }
            }
        });

    }

}

Logcat錯誤

您需要使用

runOnUiThread(new Runnable() {
    @Override
    public void run() {
}
});

以避免此錯誤。

請檢查Android“只有創建視圖層次結構的原始線程才能觸摸其視圖。”

您也可以只使用Handler在指定的時間后執行按鈕單擊,而無需使用計時器。

這是每秒運行一次的更簡單的方法。 您不需要觸發按鈕。 只需調用您要執行的方法

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);    

        Handler handler = new Handler();

        Runnable runnable = new Runnable(){
            @Override
            public void run() {
                buttonClick();
                if(handler!=null)
                    handler.postDelayed(runnable, 1000);
            }
        }

        handler.postDelayed(runnable, 1000);

    }

暫無
暫無

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

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