2016-02-29 61 views
1

我有一個小的Android應用程序,5秒後自動點擊按鈕。我已經使用performClick();但這不起作用。當計時器歸零時,它只會崩潰。如何在5秒後自動點擊Android中的按鈕

這裏是我的代碼:

protected void onCreate(Bundle savedInstanceState) { 
    try { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.local); 
     getActionBar().setIcon(R.drawable.menu_drop); 

     buttonClick(); 

     Thread timer = new Thread(){ 
      public void run(){ 
       try{ 
        sleep(5000); 
       } catch (InterruptedException e){ 
        e.printStackTrace(); 
       }finally{ 
        button1.performClick(); 
       } 
      } 
     }; 
     timer.start(); 
    } catch (NotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

public void buttonClick() { 
    button1 = (Button) findViewById(R.id.button); 
    button1.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(TestButton2.this, LocationView.class); 
      startActivity(i); 
     } 
    }); 
} 

回答

5

你應該張貼您的logcat包含錯誤信息,但一個問題可能是您訪問過的UI線程這是不是一個好主意UI元素。

要做你想做的事,你真的不需要另一個線程。您可以使用Handler和延遲Runnable而不是像下面那樣。

new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     button1.performClick(); 
    } 
}, 5000); 

這將安排Runnable在5秒後在UI線程上執行。如果這仍然崩潰從logcat發佈堆棧跟蹤。

+0

是的我應該發佈日誌聊天。但是,這工作感謝您的幫助! – Coder1

-1
protected void onCreate(Bundle savedInstanceState) { 
try { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.local); 
    getActionBar().setIcon(R.drawable.menu_drop); 

    //buttonClick(); 

    Thread timer = new Thread(){ 
     public void run(){ 
      try{ 
       sleep(5000); 
      } catch (InterruptedException e){ 
       e.printStackTrace(); 
      }finally{ 
       //button1.performClick(); 
       getLocationOnClick(); 
      } 
     } 
    }; 
    timer.start(); 
} catch (NotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
} 

更改您點擊按鈕的方法來這樣的 -

public void getLocationOnClick(View v) { 
    Intent i = new Intent(TestButton2.this, LocationView.class); 
    startActivity(i); 
    } 

的XML中的按鈕添加一個onClick屬性 -

<Button 
     android:id="@+id/btnid" 
     android:onClick="getLocationOnClick" 
     .... > 
+0

如果嘗試從UI線程調用點擊方法,則總是崩潰。只需按照接受的答案。 – sakiM

+0

您無法從主線外部更新UI界面。所以你應該從外部線程使用@amir'runOnUiThread()'方法。否則延遲主線程與處理程序一樣在接受解決方案。 –

0

使用runOnUiThread()方法。這種方法運行你的UI線程的方法

相關問題