ロケーションリスナーアクティビティがあり、トースト通知を作成したい。ただし、コンテキストとしてthis
を渡すことはできません。トーストをどのように機能させる必要がありますか?
トーストがアクティビティクラス内にある場合は、YourActiviy.this
を使用できます。ここで、YourActivity
はクラス名です。クラス外の場合は、アクティビティコンテキストを取得する必要があります(コンストラクターなどに渡します)。
インナークラスにいる場合は、これも試してください
getApplicationContext()
NameOfYourActivity.this
を使用できます
例えば:
public class MyActivity extends Activity {
...
Toast.makeText(MyActivity.this, text, duration).show();
フィールド変数:_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();
たとえば、「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();
}
});
}
それはそれをする必要があります。
アクティビティの内部クラスにいるようです。その場合は、ActivityName.thisを試してください。
代わりにgetApplicationContext()を試してください
Toast tea = Toast.makeText(getApplicationContext(), "Send", Toast.LENGTH_LONG);
tea.show();