Задать вопрос
vanesxl
@vanesxl

Как вызвать Toast с другого класса?

Здравствуйте, подскажите пожалуйста. У меня есть MainActivity и при работе которой создается новый экземпляр класса
new MyClass();
В том классе что то делается и необходимо пользователю вывести сообщение
Toast.makeText(this,"Мое сообщение",Toast.LENGTH_LONG).show();

Меня интересует, какой контекст в данном случае мне указывать? Ведь this тут не будет работать.
Заранее большое спасибо!
  • Вопрос задан
  • 1741 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 6
GavriKos
@GavriKos
Передайте в MyClass указатель на активити/контекст, в котором надо показывать тосты.
Ответ написан
Комментировать
StFaustoff
@StFaustoff
jDev
Ка дополнительный вариант ко всем предыдущим ответам, можно попробовать MyClass.this.

PS
Только я не пойму такой мудреной системы инстанцировать Activity в другом Activity.
Мы создадим Activity в другом Activity чтобы ты мог использовать Activity пока работает Activity =)

757-tachka-na-prokachku-ostalos-tolko-pr
Ответ написан
Комментировать
@iissakin
Насколько я помню, можно передать getActivity().
Ответ написан
@kapitalistka
Как альтернативный вариант, можно использовать контекст приложения.
Ответ написан
Комментировать
@qqmthfck
getApplicationContext()
Ответ написан
Комментировать
enq3
@enq3
Android engineer at #ITX5
Это сейчас надо показывать только toast, а потом понадобится состояние контролов в активности менять или вернуть результат работы класса, и одной передачей контекста уже не обойдешься.

MyClass.java
public class MyClass {
    MyClassCallback callback;

    public MyClass() {
        if(callback != null)
            callback.done();
    }

    public void setCallback(MyClassCallback callback) {
        this.callback = callback;
    }

    public void perform() {
        if(callback != null)
            callback.done();
    }

    interface MyClassCallback {
        void done();
    }
}


MainActivity.java
public class MainActivity extends AppCompatActivity {
    private MyClass myClass;
    private MyClass.MyClassCallback myClassCallback;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myClass = new MyClass();
        myClassCallback = new MyClass.MyClassCallback() {
            @Override
            public void done() {
                Toast.makeText(MainActivity.this, "Мое сообщение", Toast.LENGTH_LONG).show();
            }
        };
        myClass.setCallback(myClassCallback);
        myClass.perform();
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы