我正在尝试从弹出式对话框启动后台服务,但这对我不起作用
这是打开对话框的代码:
reportWrongLang.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
ReportWrongLangDialog Dialog = new ReportWrongLangDialog(imageInfo.getParam("imageId")[0], getApplicationContext());
Dialog.show(fm, "are_you_sure_dialog");
}
ReportWrongLangDialog中的我正在保存appContext和imageId
并在对话框中按下报告按钮时,我想启动将报告图像的后台服务
onClick的代码
report.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println("got imageid: " + imageId);
Intent intent = new Intent(appContext, ReportImageService.class);
intent.putExtra("ReportType", "IMAGE_REPORT");
intent.putExtra("ImageID", imageId);
intent.putExtra("Extra", "2");
appContext.startService(intent);
System.out.println("after service start");
}
});
其中ReportImageService.class是我想要启动的服务。 当我按下报告按钮时没有任何事情发生..
可能是什么问题?我只能假设applicationContext有一些问题
答案 0 :(得分:2)
我的应用程序遇到了同样的问题。 对我有用的解决方案是: 而不是传递你的上下文并在以后使用它(使用getContextApplication()方法),还有另一种方法,传递:
YourActivityName.this
作为您的上下文,然后从此对象调用您的startService()方法。