5

ここに画像の説明を入力 ここに画像の説明を入力

ボタンをクリックすると、単純なトーストが表示されます。私の問題は、ボタンを複数回クリックすると、メイン画面に到達するまでトースト メッセージが表示され続けることです。メイン画面に到達したらトーストを停止し、対応するアクティビティでトースト メッセージを削除したいと考えています。スクリーンショットを添付しました。

私は次のようにコードを書きました:

public class Main extends Activity {

    Dialog d;
    Toast t;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ((Button)findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                t = Toast.makeText(Main.this, "you clicked on button!", Toast.LENGTH_LONG);
                t.show();
            }
        });
    }
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        t.cancel();
    }
}

どうすればいいですか?

4

3 に答える 3

7

こんにちは私は同じ問題を抱えています。問題は、Toast がオーバーラップすることです。たとえば、Toast を 10 回押すと、Toast は 10 x LENGTH_SHORT のままになります。私が思いついた唯一の解決策は、トーストが表示される時間を自分で制御することでした。トーストを表示するときは、最後に表示した時間を追跡するだけです。それはまだ画面に表示されているため、再度表示する必要はありません。最悪の場合、Toast は LENGTH_SHORT 時間しか表示されません。

于 2011-03-14T07:18:56.863 に答える
6

Toast.makeTextToast オブジェクトを返します。このオブジェクトを呼び出しcancel()てキャンセルし、新しいオブジェクトを表示できます。

于 2012-06-28T14:11:46.047 に答える