Android 从非活动类获取上下文
是否可以从非活动类获取上下文? 没有在activity类中创建方法来获取activity 可以使用新的线程或启动新的不可见活动来显示祝酒词,然后返回到之前的活动 我的想法是编写一个包,其中包含一些通过Toast或Alert显示消息的方法。例如,我只需要导入包,就可以展示一个祝酒词 编辑: 也许我应该说,我将使用我的应用程序包,它在后台使用服务,如果我关闭应用程序,应用程序会在后台运行,当我叫Toast时会崩溃。该错误是一个空指针异常,只有当我关闭应用程序并且服务正在后台重新启动时,我才会从警报中获得该异常。Android 从非活动类获取上下文,android,android-activity,alert,android-context,android-toast,Android,Android Activity,Alert,Android Context,Android Toast,是否可以从非活动类获取上下文? 没有在activity类中创建方法来获取activity 可以使用新的线程或启动新的不可见活动来显示祝酒词,然后返回到之前的活动 我的想法是编写一个包,其中包含一些通过Toast或Alert显示消息的方法。例如,我只需要导入包,就可以展示一个祝酒词 编辑: 也许我应该说,我将使用我的应用程序包,它在后台使用服务,如果我关闭应用程序,应用程序会在后台运行,当我叫Toast时会崩溃。该错误是一个空指针异常,只有当我关闭应用程序并且服务正在后台重新启动时,我才会从警报中
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mT(Services.this,"Service starting");
A.mA(MyActivity.getAct(),"Title", "Message", R.drawable.ninja,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mT(Services.this, "Clicked");
}
}
);
Message msg = mServiceHandler.obtainMessage();
msg.arg1 = startId;
mServiceHandler.sendMessage(msg);
// If we get killed, after returning from here, restart
return START_STICKY;
}
编辑:
代码:
这是来自服务的方法。Services是类名,如果我关闭应用程序,它将自动启动,服务将再次启动。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mT(Services.this,"Service starting");
A.mA(MyActivity.getAct(),"Title", "Message", R.drawable.ninja,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mT(Services.this, "Clicked");
}
}
);
Message msg = mServiceHandler.obtainMessage();
msg.arg1 = startId;
mServiceHandler.sendMessage(msg);
// If we get killed, after returning from here, restart
return START_STICKY;
}
启动服务时会显示警报和祝酒词,但如果我关闭应用程序并且服务在后台再次启动,则不会显示。有趣的是,如果我删除了警报,但没有删除警报,就会显示祝酒词。错误消息是:
08-19 18:37:30.479 4591-4591/productions.ingos.gpstracker E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start service productions.ingos.gpstracker.Services@417322e8 with null: java.lang.NullPointerException
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2553)
at android.app.ActivityThread.access$2000(ActivityThread.java:134)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:142)
at android.app.AlertDialog$Builder.<init>(AlertDialog.java:359)
at ingos.productions.DP.mA(DP.java:29)
at productions.ingos.gpstracker.Services.onStartCommand(Services.java:117)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2536)
at android.app.ActivityThread.access$2000(ActivityThread.java:134)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)
public static void mT(Context ct,String str)
{
Toast.makeText(ct,str,Toast.LENGTH_SHORT).show();
}
public static void mA(Context ct,String title, String message,Integer icon,DialogInterface.OnClickListener Dif)
{
AlertDialog alertDialog = new AlertDialog.Builder(ct).create();
alertDialog.setTitle(title);
alertDialog.setMessage(message);
alertDialog.setButton("OK", Dif);
alertDialog.setIcon(icon);
alertDialog.show();
}
您可以像当前Toast方法一样在上下文中传递。makeText(上下文、字符串值、int持续时间)。您还可以在初始化类时将其上下文传递给类
使用公共静态方法,如果您使用该方法如果您的类是fragment,则只需getActivity()方法将为您提供上下文,如果是一个简单的java类,那么您需要在该类中创建一个构造函数,该构造函数带有一个context参数,该参数可以从初始化它的活动中获取上下文。您可以像当前的Toast方法一样传入上下文。makeText(上下文、字符串值、int持续时间)。您还可以在初始化类时将其上下文传递给类。您可以发布一些代码和日志消息吗