0

一定時間後に開始するアクティビティがあります。このアクティビティが開始されると、ユーザーは新しいタイマーを開始するボタンを押すことになっています。

ただし、ユーザーがボタンを押さない場合、ボタンが押されるまで5分ごとにトーストを表示したい.

ボタンのリスナーがあります:

    startBreakButton = (Button) findViewById(R.id.startBreakButton);
    startBreakButton.setOnClickListener(mStartListener);

トーストを表示するためのコードがあり、他のすべてがうまく機能しています。

ボタンがクリックされる前に実行したいコードをどこに置くべきかわかりません。mStartListener コード内、または onCreate メソッド内などの他の場所で?

アップデート

 public class BreakActivity extends Activity {

Button startBreakButton; // button to start the break timer
Boolean clicked= false;
CountDownTimer counter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.breakscreen); // sets layout to breakscreen.xml

    MyCount counter;
    counter=new MyCount(5000,1000);
    counter.start();

  startBreakButton = (Button) findViewById(R.id.startBreakButton);
    startBreakButton.setOnClickListener(mStartListener);

  View.OnClickListener mStartListener = new OnClickListener() { 

 clicked=true;
 //other listener code
 };

 public class MyCount extends CountDownTimer{
    public MyCount(long millisInFuture, long countDownInterval) {
    super(millisInFuture, countDownInterval);
    }
    @Override
    public void onFinish() {
      if(clicked==false){
        Toast.makeText(getApplicationContext(), "TAKE A BREAK", Toast.LENGTH_LONG).show();
        counter= new MyCount(5000,1000);
     counter.start();
        }

    }
    @Override
    public void onTick(long millisUntilFinished) {
        long s1 = millisUntilFinished;

    }
    }
    };

編集 - 上記のソリューションは機能していません。clicked==false ではなく、clicked==false にする必要があります!!

4

4 に答える 4

1

このようにしてみてください..

oncreate でカウントダウンタイマーを作成します。

 MyCount counter;
 counter=new MyCount(300000,1000);
 counter.start();

マイカウントクラス..

   public class MyCount extends CountDownTimer{
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
  if(clicked=false){
  //put the toast here
    counter= new MyCount(300000,1000);
 counter.start();
    }

}
@Override
public void onTick(long millisUntilFinished) {
    s1=millisUntilFinished;



}
}
}

そしてstartBreakButtonのonclicklistenerに置く

clicked=true;
于 2012-04-10T11:26:27.217 に答える
0

AlarmManager を使用して、今から 5 分間のアラームを設定できます。

次に、ユーザーがボタンをクリックしなかったかどうかを確認し、トーストを表示して、別のアラームを設定します。ユーザーがボタンをクリックした場合は、何もしません。

于 2012-04-10T11:14:18.277 に答える
0

ボタンがクリックされたかどうかを決定するフラグを保持します。クリックされた場合は、そのフラグを true にします。フラグが false の場合、ボタンを押すためにトーストするメソッドを 5 分ごとに呼び出します。5分ごとにスケジュールメソッドを呼び出すことができます。

于 2012-04-10T11:19:03.860 に答える
0

onClicklistener メソッド内にトースト コードを配置する必要があります。if 条件を使用して、ボタンが押されているかどうかの状態を把握します。うまくいくことを願っています。

于 2012-04-10T12:04:58.347 に答える