18783


Androidアプリケーションをeclipseを使って作っています。  
VideoViewで動画再生時に再生不可の場合に動画が再生できませんと(OK)ボタンもいっしょに出てくるものを、Toast表示のみにしたい（時間が経てば消える）と思っています。

[code]

        videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
            public boolean onError(MediaPlayer mp, int what, int extra) {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(this, "エラーが発生しました。", Toast.LENGTH_LONG)
                                .show();
                    }
                });
                return false;
            }
        });
    
[/code]

しかし、Toast行で  
「型 Toast のメソッド makeText(Context, CharSequence, int) は引数 (new Runnable(){},
String, int) に適用できません」  
というエラーが発生します。このthisがnew Runnable(){}になるからだと思いますが、解決する方法がわかりません。

ご存知の方ご教示お願いします。


CC BY-SA 3.0
2015-11-13T04:59:03.053
18777
2015-11-22T15:31:25.557
8593
question
android eclipse videoview
AndroidでVideoViewを使っての動画再生不可の場合にToast表示


Java (Android) ではよく使うケースですが、外側で一端、別の final 変数に保持して、それを与えてやればいいです。

[code]

    final Context context = this;
    videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
        ...
        Toast.makeText(context, "エラーが発生しました。", Toast.LENGTH_LONG)
        ...
    
[/code]


CC BY-SA 3.0
2015-11-13T05:39:10.237
18783
2015-11-13T05:39:10.237
7290
18777
answer


`(その外側クラス名).this`とする方法があります。  
例えばMainActivity.javaの場合、`MainActivity.this`と書けます。


CC BY-SA 3.0
2015-11-22T15:31:25.557
19173
2015-11-22T15:31:25.557
8472
18777
answer