我创建了一个类来处理一个简单的消息弹出窗口,这样我就可以在整个应用程序中重用代码。我似乎无法正确地获得上下文。这是从所有地方调用的,通常来自没有直接UI的类。见下面的行......
public class msg {
public void msghand(String message, Exception e) {
{
String s;
if (e != null)
{
s= message + "\n" + e.getLocalizedMessage() + " " + e.toString();
}
else
{
s= message ;
}
new AlertDialog.Builder( getApplicationContext () ) <<<< HERE IS THE PROBLEM
.setMessage(s)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.create()
.show();
}
}
}
答案 0 :(得分:2)
您是否可以将Context in作为参数传递?
public void msghand(String message, Exception e, Context context) {
...
new AlertDialog.Builder(context)
...
没有上下文,你在哪里工作?服务没有UI,但仍然有上下文。
编辑:
您可以创建一个静态可访问的小型消息服务,并在应用程序启动时创建。例如:
class MyActivity extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
// create the Message service that can be statically accessed
s_MessageService = new MessageService(getApplicationContext());
...
}
public static MessageService getApplicationMessageService()
{
return s_MessageService;
}
private static MessageService s_MessageService;
}
正确实施MessageService的地方
class MessageService
{
public MessageService(Context messageContext)
{
m_MyContext = messageContext;
}
public msghand(String message, Exception e)
{
// exactly the same as before, except using the stored context
}
Context m_MyContext = null;
}
您的DBHelper类可以通过
使用它MyActivity.getApplicationMessageService().msghand(...);
答案 1 :(得分:0)
在类msg的构造函数中将Context作为参数添加,并从使用它的任何活动中传入。