1

時間制限のあるアンドロイド用のクイズゲームがあります。私が欲しいのは、ボタンの1つをクリックすると、自動的に次のレベルのクラスに進むという選択ボタンがありますが、ボタンのいずれかをクリックしないかクリックしないと、他のクラスに進むことになります。ゲームには時間制限があります。私の問題は、ボタンの選択肢のいずれかをクリックしなかった場合に、別のクラスに自動的に移動または転送する時間制限を設定する方法がわからないことです。私は睡眠を試みましたが、すでに正しい答えをクリックしていて、次のレベルのクラスにいる場合でも、睡眠を意図したクラスに睡眠します。私の問題で私を助けてください。私もハンドラを試してみましたが、うまくいきませんでした

public class EasyOne extends Activity {

ボタン a、b、c; TextView タイマー;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.easyone);
    a = (Button) findViewById(R.id.btn_ea1);
    b = (Button) findViewById(R.id.btn_eb1);
    c = (Button) findViewById(R.id.btn_ec1);
    a.setOnClickListener(new View.OnClickListener() {
    @Override   
           public void onClick(View v) {
                Toast.makeText(getApplicationContext(),"CORRECT!",
                        Toast.LENGTH_SHORT).show();
                Intent intent = new     Intent(getApplicationContext(),EasyTwo.class);
                startActivity(intent);
        }
    });
}

private Runnable task = new Runnable() { 
    public void run() {
        Handler handler = new Handler();
        handler.postDelayed(task, 5000);
         Intent intent = new Intent(getApplicationContext(),TimesUp.class);
            startActivity(intent);

    }
};
4

1 に答える 1

0

ハンドラーを使用する必要がありますが、タイムアウトをキャンセルするには、クリック リスナー コードのハンドラーから遅延メッセージを削除する必要があります。

public class EasyOne extends Activity {

static private Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        if (msg.what == 123) {
            ((EasyOne) msg.obj).onTimeout();
        }
    }
};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.easyone);
    a = (Button) findViewById(R.id.btn_ea1);
    b = (Button) findViewById(R.id.btn_eb1);
    c = (Button) findViewById(R.id.btn_ec1);

    Message msg = mHandler.obtainMessage(123,this);
    mHandler.sendMessageDelayed(msg,5000);

    a.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(),"CORRECT!",
                    Toast.LENGTH_SHORT).show();

            mHandler.removeMessages(123,this);

            Intent intent = new Intent(getApplicationContext(),EasyTwo.class);
            startActivity(intent);

        }
    });
}

private void onTimeout() {
    //your code
}

}

于 2013-07-31T09:03:35.590 に答える