2

これが私のコードです:

public class SomeName extends MapActivity implements OnClickListener, OnTouchListener{
public Timer t1 = new Timer();
public TimerTask tt;
public long interval = 5000;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.map);
    timer();
}
public final void timer()
{ 

    t1 = new Timer();
    tt = new TimerTask() {
        @Override
        public void run() {
            systemClick();
        }
    };
    t1.scheduleAtFixedRate(tt, 10000, interval);
}
 public void systemClick()
{
      Toast.makeText(getApplicationContext(),"System Button Clicked", 5).show();
}

実際、私は自分の場所を更新する関数を呼び出したいと思っています。

しかし、なぜ画面にトーストが表示されないのか理解できません。私はアンドロイドが初めてです。

助けてくれてありがとう。

4

2 に答える 2

1

アクティビティでハンドラーを使用する

final Handler handlerforadd = new Handler();
Runnable runnableforadd  = new Runnable() {
    @Override
    public void run() {
        handlerforadd.postDelayed(this, 1000);
    }   
};

handlerforadd.postDelayed(runnableforadd, 0);
于 2012-06-04T20:07:07.607 に答える
0

その理由は、Toast を UI スレッドで実行する必要があるためです。現在のコードでは、メソッドrun()は別のスレッドで実行されています。プロセスとスレッドに関するこの記事を参照することをお勧めします。@parag は正しい Handler を使用することは、UI スレッドへの参照を取得する 1 つの方法ですが、他の方法もあります。

于 2012-06-04T20:33:43.287 に答える