最近写一个自定义的Toast,需要在service里面调用这个自定义的类,源码如下;
public class MyToast {
private Activity context;
public MyToast(Activity mcontext){
this.context=mcontext;
}
//在主线程和子线程中显示
public void showMyToast(final String messages) {
if ("main".equals(Thread.currentThread().getName())) {
showToast(messages);
} else {
context.runOnUiThread(new Runnable() {
@Override
public void run() {
showToast(messages);
}
});
}
}
//toast初始化和布局
private void showToast(final String text){
Toast toast =new Toast(context);
LayoutInflater inflater =context.getLayoutInflater();
View toastLayout=inflater.inflate(R.layout.mytoast,(ViewGroup)context.findViewById(R.id.toast));
TextView textView=(TextView)toastLayout.findViewById(R.id.toastText);
textView.setText(text);
toast.setGravity(Gravity.BOTTOM,0,0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(toastLayout);
toast.show();
}
}
现在有个问题就是,我这个类需要传入一个Activity的上下文,但是我搜索了好些方法,在service里获取当前Activity都不太理想,于是我便想参考系统的Toast方法(因为在service里使用Toast可以直接传入service的上下文),更改一下我的类中的上下文,系统的Toast方法如下:
可以看见这里使用的构造方法与我不一样,那么看一下构造方法:
但是奇怪的是,当我自己写的时候就出问题了,Toast mytoast=new Toast(context,looper);这一句就会报错,提示没有这个方法,我在网上看其他的Toast说明却发现构造方法不一样!如下:
希望有哪位大佬帮我解决一下!就是要么将Toast改成全局的,即传入的上下文为Context类型,要么就是教教我怎么在service里获取当前的Activity,不胜感激!