Toastの正しい開き方-Toast複数回表示が消えない-toast表示の問題

1918 ワード

最初にandroidを勉強したとき、簡単で便利なように、Toast、情報提示ボックスを表示したいとき.簡単な言葉で言います.
Toast.makeText(MainActivity.this, "    android    ", Toast.LENGTH_SHORT).show();

(PS:MainActivity.this自分が自分の環境を見て修正)
長所:書きやすい
欠点:いくつかの変態テスト員に出会ったとき、彼らは狂ったようにあなたのこのToastを表示するbuttonをクリックしたとき、情報弾窓はあなたのappに何度も表示され、あなたがアプリケーションを終了しても彼らは消えません.これは本当にユーザー体験に影響しすぎて、自分で見ても不快です.しかし、私も料理をしています.どうせ解決策が見つからなかったのです.
しかし、ついにある時、科大訊飛の中のdemoを見たとき、彼らがToastを書いたのを見て、自分でどう注文しても、どうせすぐに消えてしまった.何度も表示されず、画面に表示されている書き方.
個人的にはこの書き方だと思いますが、素敵です.やっと私の長い間の心の中の恨みを解決した.
コードは次のとおりです.
public class MainActivity extends AppCompatActivity {
    private Button button1,button2;
    private Toast mToast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mToast = Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT);

        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);

        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "1", Toast.LENGTH_SHORT).show();
            }
        });

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showToast("2");
            }
        });
    }

    public void showToast(final String str) {
        mToast.setText(str);
        mToast.show();
    }
}

説明します.
いずれにしても2つ目の書き方をするときは、どんなにbutton 2を狂っても、Toastを表示するのは1回しか表示されません.何度も表示されません.何度もbuttonをクリックすることもなく、そのtoastは長い間消えなくなった.
具体的な原理は、私も知らないので、皆さんに補充してください.
どうせ完璧に解決したので、toastは問題を表示します.
ソースコードDemoこれはandroid studioのコードです.
皆さん、android studioで開けてください.自分で私の上の勝手に書いてもいいです.