2013-01-04 117 views
1

我刚刚更新了我的应用程序在Play商店中,我开始收到来自人民崩溃报告,一个是我一个人知道,所以他开始帮助我解决这个问题,我发现了问题引起的由我什至没有修改。应用程序崩溃没有理由

的代码看起来像这样 的部分是造成该问题是bulb.onClickListener

public class Bulb extends Activity { 

    public boolean isAwake = false; 
    boolean timerActivated = false; 
    static ImageView glow; 
    public static boolean bulbActIsRunning = false; 

     public void startWake() { 
     Intent wS=new Intent(getBaseContext(), WakeService.class); 
     startService(wS); 
     } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ImageButton bulb = (ImageButton) findViewById(R.id.bulb); 
     ImageButton ghl = (ImageButton) findViewById(R.id.ghl); 
     glow = (ImageView) findViewById(R.id.glow); 

     if (WakeService.isAwake) { 
      glow.setVisibility(View.VISIBLE); 
     } 
     else { 
      glow.setVisibility(View.INVISIBLE); 
     } 

     bulb.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       startWake(); 

       if (WakeService.isAwake) { 
        glow.setVisibility(View.INVISIBLE); 
       } 
       else { 
        glow.setVisibility(View.VISIBLE); 
       }   
      } 
     }); 

     ghl.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geekshavelanded.com/")); 
       startActivity(browserIntent); 
      } 
     }); 
    } 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 

     glow = (ImageView) findViewById(R.id.glow); 

     if (WakeService.isAwake) { 
      glow.setVisibility(View.VISIBLE); 
     } 
     else { 
      glow.setVisibility(View.INVISIBLE); 
     } 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     bulbActIsRunning = true; 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     bulbActIsRunning = false; 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 
} 

我的朋友后点击按钮灯泡无故应用程序崩溃,我已经把一些Toast通知在在onClickListener的开始,看它是否坠毁前出现,但它没有

的崩溃报告这个样子

java.lang.RuntimeException: Unable to start service [email protected] with Intent { cmp=com.doublep.wakey/.WakeService }: java.lang.NullPointerException 
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2933) 
at android.app.ActivityThread.access$1900(ActivityThread.java:151) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1438) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:155) 
at android.app.ActivityThread.main(ActivityThread.java:5454) 
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:1029) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
at android.os.Parcel.readException(Parcel.java:1436) 
at android.os.Parcel.readException(Parcel.java:1384) 
at com.android.internal.appwidget.IAppWidgetService$Stub$Proxy.updateAppWidgetIds(IAppWidgetService.java:513) 
at android.appwidget.AppWidgetManager.updateAppWidget(AppWidgetManager.java:333) 
at android.appwidget.AppWidgetManager.updateAppWidget(AppWidgetManager.java:400) 
at com.doublep.wakey.WakeService.keepAwake(WakeService.java:86) 
at com.doublep.wakey.WakeService.onStartCommand(WakeService.java:48) 
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2912) 
... 10 more 

任何人都可以看到可疑的东西? 当我更新我的应用程序时,我甚至没有触及此活动的代码,并且其他一切正常,因为我可以从小部件调用服务。 所以这个问题必须在这里

我还修改了分SDK从8比7(而是看它是否正常工作,我已经把它回到8) 而我压缩一些图形多一点点,以节省空间

编辑哦,我忘了说了,这只是发生在少数设备,大多数似乎运作良好

更新2这是导致这些问题

AppWidgetManager mgr=AppWidgetManager.getInstance(this); 
mgr.updateAppWidget(ToggleWidget.appWidgetId, ToggleWidget.remoteViews); 
的代码段
+2

你能告诉我们什么线86和WakeService的线48? – MrZander

+3

甲'NullPointerException' *是*一个原因;) – Ahmad

+0

线48和86是日志,48是从如果else语句,从else语句中的代码48生成的日志,并运行一个方法,这个方法包含日志86,这是在一个唤醒后写的 WakeService是从一个小部件也调用,所以它工作正常 – DoubleP90

回答

0

请检查参数updateAppWidget()。以太网远程视图为空或您正在设置空位图。

+0

我有这在WakeService 'private void updateWidget(){ retreiveIds(); Log.w(“Wakey”,“Widget update”+ ids); Log.w 意图意图=新意图(此,ToggleWidget.class); intent.setAction(“android.appwidget.action.APPWIDGET_UPDATE”); // int [] ids = ids; intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids); sendBroadcast(intent); }' 而这在微件 'appWidgetManager.updateAppWidget(appWidgetId,remoteViews);' – DoubleP90

+0

另外我有这个这是无用的,忘记删除 'AppWidgetManager经理= AppWidgetManager.getInstance(本); mgr.updateAppWidget(ToggleWidget.appWidgetId,ToggleWidget.remoteViews);' – DoubleP90

+2

@ DoubleP90请更新的问题,而不是倾销代码到注释,它本质上是不可能的阅读。 –