web-dev-qa-db-ja.com

「this」をコンテキストとして使用できない場合のToastの使用方法

ロケーションリスナーアクティビティがあり、トースト通知を作成したい。ただし、コンテキストとしてthisを渡すことはできません。トーストをどのように機能させる必要がありますか?

16
Seth Hikari

トーストがアクティビティクラス内にある場合は、YourActiviy.thisを使用できます。ここで、YourActivityはクラス名です。クラス外の場合は、アクティビティコンテキストを取得する必要があります(コンストラクターなどに渡します)。

21
MByD

インナークラスにいる場合は、これも試してください

getApplicationContext()

6
droid kid

NameOfYourActivity.thisを使用できます

例えば:

public class MyActivity extends Activity {

 ...
     Toast.makeText(MyActivity.this, text, duration).show();
5
ccheneson

フィールド変数:_Context context;_

onCreate内:_context = this;_

Xamarin/C#構文:Toast.MakeText(context, "your message", ToastLength.Long).Show();

Android/Java構文:Toast.makeText(context, "your message", Toast.LENGTH_LONG).show();

2
BlueAero

たとえば、「onComplete」というメソッドを含むリスナーがある場合、このコードは機能するはずです。

public void onComplete(String response, Object state) {
        final String response_complete = response;
        MyActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(MyActivity.this, text, duration).show();
            }
        });
    }

それはそれをする必要があります。

1
bpaulon

アクティビティの内部クラスにいるようです。その場合は、ActivityName.thisを試してください。

0
Mike dg

代わりにgetApplicationContext()を試してください

 Toast tea = Toast.makeText(getApplicationContext(), "Send", Toast.LENGTH_LONG);
 tea.show();
0
Ali