事務屋さんの備忘録

主にプログラミングのことを書いていきます。メモというか備忘録的な感じで。プログラミングといっても、私はプロのエンジニアでも本職のプログラマーでもありません。単なる事務職をやってるサラリーマンで、空いた時間にちょこちょこっとプログラミングしてる程度です。よってこのブログに記載したことが誤っていたり、もっとよい方法がある場合もあると思います。その場合には、ご指摘いただけると嬉しいです。また、このブログを読んで役に立った、なんて方がいらっしゃったら幸いですね。

Toastの終了を検出する

メモ。

package com.freefly3104.toast01;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		Button btn = (Button) findViewById(R.id.button1);
		
		// クリック処理(匿名クラス)
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO 自動生成されたメソッド・スタブ
				showToast("Hello, world");
			}

		});
	}

	private void showToast(String msg) {
        final TextView text = (TextView)findViewById(R.id.textView1);
        text.setText("Showing Toast ...");

        final Toast toast = Toast.makeText(this, msg, Toast.LENGTH_LONG);
        new FrameLayout(this) {
            {
                addView(toast.getView()); // toastのviewをframelayoutでくるむ
                toast.setView(this);      // framelayoutを新しくtoastに設定する
            }
            @Override
            public void onDetachedFromWindow() {
                super.onDetachedFromWindow();
                
                // Toastが終了したあとの処理をする
                text.setText("Toast on Dismiss");
                
            }
        };
        toast.show();
    }
}