package com.example.helloandroid;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class HelloandroidActivity extends Activity {
/** Called when the activity is first created. */
Button mybtn0,mybtn1;
private Handler mhandler= new Handler();
Timer timer= new Timer();
String s=new String(" ");
int delay=0;
int period=5000;
int var=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Object o=null;
// o.toString();
// TextView tv = new TextView(this);
// tv.setText("Hello Andriod");
setContentView(R.layout.main);
mybtn0= (Button)findViewById(R.id.number_button);
//mybtn.requestFocus();
mybtn0.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
mybtn0.clearFocus();
}
});
// mybtn2= (Button)findViewById(R.id.contact_button);
//setUpFocus();
try
{
mybtn1=(Button)findViewById(R.id.contact_button);
//mybtn2= (Button)mybtn.focusSearch(View.FOCUS_DOWN);
mybtn1.requestFocus();
mybtn0.clearFocus();
}
catch(Exception e)
{
Log.e("focus change","focus failed",e);
}
timer.scheduleAtFixedRate(new TimerTask(){
public void run()
{
switch(var)
{
case 0: mybtn0.clearFocus();
mybtn1.requestFocus();
break;
case 1: mybtn1.clearFocus();
mybtn0.requestFocus();
break;
default: break;
}
var= (var+1)%2;
}
}, delay, period);
}
我已經使用上述代碼來完成兩個按鈕之間使用計時器自動更改焦點。但我得到「從錯誤的線程異常」調用。 我認爲這是因爲計時器。請有人更正此代碼,並提供有關如何使用Handler類實現此代碼的示例代碼。自動更改兩個按鈕之間的焦點定期