我想要在进入手机主菜单,连接服务器以及获取消息显示自定义吐司后服务工作。我做了大部分,但我只能在吐司中显示文字。 我想用图像制作自定义烤面包,我发现很多解决方案如何在活动中做到这一点,但它不能正常使用。
有人可以告诉我应该更改什么才能使此代码正常工作?
public class MyService extends Service {
private Toast toast;
private Timer timer;
private TimerTask timerTask;
private class MyTimerTask extends TimerTask {
@Override
public void run() {
showToast();
}
}
private void showToast() {
LayoutInflater inflater = (LayoutInflater)
getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.toast, null);
ImageView image = (ImageView)
layout.findViewById(R.id.image);
image.setImageResource(R.drawable.truck);
TextView textView = (TextView)
layout.findViewById(R.id.text);
textView.setText("Some toast message");
toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.BOTTOM, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
@Override
public void onCreate() {
super.onCreate();
timer = new Timer();
toast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
clearTimerSchedule();
initTask();
timer.scheduleAtFixedRate(timerTask, 4 * 1000, 4 * 1000);
return super.onStartCommand(intent, flags, startId);
}
private void clearTimerSchedule() {
if(timerTask != null) {
timerTask.cancel();
timer.purge();
}
}
private void initTask() {
timerTask = new MyTimerTask();
}
@Override
public void onDestroy() {
clearTimerSchedule();
super.onDestroy();
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
答案 0 :(得分:1)
我用其他原始方式解决了我的问题,但也许它会帮助那些遇到同样问题的人。
我从Toast辞职并创建了一个看起来像对话框的新活动
清单中的:
<activity android:label="@string/app_name"
android:name="YourDialog"
android:theme="@android:style/Theme.Dialog"
android:taskAffinity=""/>
并在服务中:
Intent dialog = new Intent(this, YourDialog.class);
dialog.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialog);
答案 1 :(得分:0)
可以按照我们的意愿定制Toast。它已经在开发者网站上提到过了。请查看以下链接http://developer.android.com/guide/topics/ui/notifiers/toasts.html