Как использовать тост, когда я не могу использовать "это" в качестве контекста


У меня есть активность слушателя местоположения, и я хочу сделать всплывающие уведомления. Но это не позволит мне передать this как контекст. Как я должен заставить тост работать?

7 13

7 ответов:

Если тост находится внутри вашего класса activity, вы можете использовать YourActiviy.this, где YourActivity - имя класса. если он находится вне вашего класса, вам нужно будет получить контекст действия (передать его в конструктор и т. д.)

Вы можете использовать NameOfYourActivity.this

Например:

public class MyActivity extends Activity {

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

Если вы находитесь во внутреннем классе, то попробуйте и это

GetApplicationContext ()

Переменная поля: 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.этот.

Вместо этого попробуйте getApplicationContext ()

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