Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复BootReceiver java.lang.NullPointerException?_Java_Android_Eclipse_Nullpointerexception_Broadcastreceiver - Fatal编程技术网

如何修复BootReceiver java.lang.NullPointerException?

如何修复BootReceiver java.lang.NullPointerException?,java,android,eclipse,nullpointerexception,broadcastreceiver,Java,Android,Eclipse,Nullpointerexception,Broadcastreceiver,我遇到了这个错误,我不知道如何修复它: 09-18 10:14:34.482: E/Trace(787): error opening trace file: No such file or directory (2) 09-18 10:14:34.542: W/ResourceType(787): No package identifier when getting value for resource number 0x00000000 09-18 10:14:34.683: E/BootR

我遇到了这个错误,我不知道如何修复它:

09-18 10:14:34.482: E/Trace(787): error opening trace file: No such file or directory (2)
09-18 10:14:34.542: W/ResourceType(787): No package identifier when getting value for resource number 0x00000000
09-18 10:14:34.683: E/BootReceiver(787): java.lang.NullPointerException
有人能告诉我如何修复这个错误吗

BroadcastReceiver java:

public class BootReceiver extends BroadcastReceiver {

    private static final String TAG="BootReceiver";

    @Override 
    public void onReceive(Context context,Intent intent) {
        try {
            DisplayMetrics metrics = new DisplayMetrics(); 
            WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            windowManager.getDefaultDisplay().getMetrics(metrics);
            int height = metrics.heightPixels; 
            int width = metrics.widthPixels;
            Bitmap tempbitMap = BitmapFactory.decodeResource(context.getResources(), MainActivity.tophone);
            WallpaperManager wallpaperManager = WallpaperManager.getInstance(context); 
            wallpaperManager.setWallpaperOffsetSteps(1, 1);
            wallpaperManager.suggestDesiredDimensions(width, height);
            try {
                wallpaperManager.setBitmap(tempbitMap);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch(Exception e){
            Log.e(TAG,e.toString());
        }
    }
}

应用程序无法找到
main活动。tophone
由于您的设备刚刚启动,且应用程序尚未打开,这意味着
tophone
变量尚未初始化。因此它触发了
NullPointerException
,因为
没有包标识符
,这意味着它无法找到具有实际为null的给定名称的资源

决心:

  • 在广播中声明tophone it self的值
  • 将值存储在活动中的SharedReference中,并在BroadcastReceiver中获取它

main活动。tophone
可能为空。充分展示logcat@SilentKiller我为解释和答案添加了logcathank,但是如何在SharedReference中存储值呢?