吐司在外部类 - Android电子
我开始使用AndroidStudio,我想在我的外部类的主要活动中使用吐司:吐司在外部类 - Android电子
在外部类我有这个方法:
private void call_toast(){
Toast.makeText(MainActivity, "Task Finalize!", Toast.LENGTH_SHORT).show();
}
这是我的的想法,但给我错误的“MainActivity”。我如何在外部课堂上展示我的实际活动?提前致谢,并对我的英语感到抱歉!
PD1:如果您需要更多信息或代码建议我!
你有几个选项。
-
通行证在上下文到
call_toast
即:public void call_toast(Context context){}
和从活动中调用:
call_toast(SomeActivity.this);
- 呼叫
getApplicationContext()
你需要一个活动。
希望这有助于你开始。
非常感谢! – 2014-11-20 17:33:20
对不起,但我怎么能发送从异步任务吐司!? :O – 2014-11-20 18:13:21
请参阅下面关于在主线程**外使用Toast **的答案。 – GNewc 2014-11-20 19:34:35
尝试
Toast.makeText(getApplicationContext(), "Task Finalize!", Toast.LENGTH_SHORT).show();
对不起,但我怎样才能从异步任务发送吐司!? :O – 2014-11-20 18:13:43
嗨Merli,你可以使用这种方法:http://stackoverflow.com/questions/16830255/how-to-display-toast-in-asynctask-in-android – Machado 2014-11-21 11:02:30
显示Toast需要在主UI线程中完成。以下代码是可以从任何线程(包括后台服务,当您的应用程序甚至不在前台时)执行的静态方法的示例。
public class ServiceUtils {
//-------------------------------------------------------------------------
// Constructor
// All methods in this class are static, no need for a public constructor
private ServiceUtils() {}
private static final Handler s_toastHandler = new Handler(Looper.getMainLooper());
public static void notifyUI(final Context context, final String toastMsg) {
s_toastHandler.post(new Runnable() {
public void run() {
try {
Toast.makeText(context,
toastMsg,
Toast.LENGTH_SHORT).show();
}
catch(Exception ex) {
Log.e(ServiceUtils.class.getSimpleName(), ex.getMessage());
}
}
});
}
}
现在你可以从任何地方拨打:
ServiceUtils.notifyUI(getApplicationContext(), "some toast message")
外部类?你的意思是内部课堂吗? – Simas 2014-11-20 17:18:04
如果您需要从AsyncTask中更新UI(例如使用'Toast'),如注释中所示,您可以在'onPostExecute()'或除'doInBackground()'之外的任何方法中做到这一点,如果它是活动的内部类。如果你的'AsyncTask'是一个单独的文件,[看到这个关于使用接口的答案](http://stackoverflow.com/questions/18517400/inner-class-can-access-but-not-update-values-asynctask/ 18517648#18517648) – codeMagic 2014-11-20 19:45:27