Привет, я хочу сделать Toast
доступным для меня no-matter-what и доступным из любого потока всякий раз, когда мне нравится в моем приложении. Поэтому для этого я расширил класс Activity
:
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Toast;
public class MyActivity extends Activity{
private Handler mHandler;
@Override
public void onCreate(Bundle savedInstanceState) {
mHandler = new Handler();
super.onCreate(savedInstanceState);
}
private class ToastRunnable implements Runnable {
String mText;
public ToastRunnable(String text) {
mText = text;
}
public void run(){
Toast.makeText(getApplicationContext(), mText, Toast.LENGTH_SHORT).show();
}
}
public void doToast(String msg) {
mHandler.post(new ToastRunnable(msg));
}
}
чтобы все Activity
классы в моем приложении теперь просто
public class AppMain extends MyActivity {
//blah
}
то, что я ожидал сделать (в рабочем потоке), было следующим:
try{
MyActivity me = (MyActivity) Looper.getMainLooper().getThread();
me.doToast("Hello World");
}
catch (Exception ex){
Log.e("oh dear", ex.getMessage());
}
и пока Activity
был "MyActivity
", он должен работать, но проблема в том, что --- > Looper.getMainLooper().getThread();
не возвращает мне MyActivity
, и это заставляет меня плакать - Что я делаю не так?
: EDIT:
некоторый фон, чтобы объяснить "почему" я застрял с этим типом внедрения.
Мне нужно иметь возможность подтвердить пользователю, что событие "HTTP POST" прошло успешно. Теперь. Если пользователь нажимает "ОК" в форме пользовательского интерфейса, он МОЖЕТ или НЕ МОЖЕТ БЫТЬ интернет в то время. Если у него есть Интернет - все хорошо и хорошо - он отправляет форму через HTTP POST все хорошо и хорошо.. но если есть НЕТ интернет, то большинство (99.999% приложений Android lame/pathetic/mewling при этом и в основном предлагают пользователю план "b" , предполагая, что во все времена интернет есть - когда это НЕ)
Мое приложение не будет "хромым (как я его называю)" - у него действительно есть план "b" , вместо этого он "Очереди" события сообщения и повторяет каждые x минут.. теперь это это бесшумная нить в фоновом режиме. У меня много взаимодействия с пользователем во всем приложении. Я не знаю, где пользователь будет "быть", но в конце концов, когда HTTP POST, что очередь/повторяет/очереди/повторы возвращается "! Успех!" Я хочу, чтобы Toast
это как сообщение пользователю (EG: "ваша форма была отправлена " )