2013-01-04 3 views
1

방금 ​​놀이방에서 내 앱을 업데이트했고 사람들로부터 충돌 보고서를 받기 시작했습니다. 하나는 내가 아는 사람 이었기 때문에이 문제를 해결하기 위해 도움을주었습니다. 문제가 발생했음을 발견했습니다. 무언가에 의해 나는 심지어 수정하지 않았다. 코드는 문제의 원인이 부분처럼 보이는이유없이 충돌하는 앱

내 친구 후

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; 
    } 
} 

는 전구 버튼을 이유없이 응용 프로그램이 충돌을 클릭 할 bulb.onClickListener이다, 나는에 약간의 토스트 알림을 넣었습니다 이 충돌하기 전에 나타난 경우 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 
처럼 보이지 않았다

누군가 의심스러운 것을 볼 수 있습니까? 위젯에서 서비스를 호출 할 수 있기 때문에 앱을 업데이트 할 때이 액티비티 코드를 건드리지도 않았다. 그래서 문제는 여기에 있어야합니다

는 또한 7 8에서 최소 SDK를 수정 (하지만 내가 8로 다시 넣었습니다 작동하는지 확인) 그리고 난 공간을 절약하기 위해 일부 그래픽 조금 더 압축

편집 나는이 그것을 작동 보인다 대부분에, 몇 가지 장치에만 발생, 말을 잊었 오 미세

업데이트 2이 이러한 문제를

AppWidgetManager mgr=AppWidgetManager.getInstance(this); 
mgr.updateAppWidget(ToggleWidget.appWidgetId, ToggleWidget.remoteViews); 
원인 코드의 조각
+2

WakeService의 어떤 행 86과 48 행을 말할 수 있습니까? – MrZander

+3

'NullPointerException' *은 이유입니다.) – Ahmad

+0

48 번째 줄과 86 번째 줄은 로그이고, 48 번째 줄은 if else 문에서 가져온 것이고, else 문은 48 번째 줄의 코드를 생성하고 메서드를 실행합니다.이 메서드는 로그를 포함합니다 86, wakelock 후에 쓰여짐 WakeService도 위젯에서 호출되므로 잘 작동합니다. – DoubleP90

답변

0

매개 변수를 updateAppWidget()에 확인하십시오. Ether 원격 뷰가 null이거나 null 비트 맵을 설정 중입니다.

+0

WakeService에 이걸 가지고 있습니다. 'private void updateWidget() { retreiveIds(); Log.w ("Wakey", "Widget update"+ ids); 인 텐트 intent = 새 인 텐트 (this, ToggleWidget.class); intent.setAction ("android.appwidget.action.APPWIDGET_UPDATE"); // int [] ids = ids; intent.putExtra (AppWidgetManager.EXTRA_APPWIDGET_IDS, ids); sendBroadcast (의도); } 위젯에' 그리고이 'appWidgetManager.updateAppWidget (appWidgetId, 리모트 뷰 RemoteViews) 또한 내가 쓸모이었던이 있었고 'AppWidgetManager MGR = AppWidgetManager.getInstance (이)를 삭제 깜빡 – DoubleP90

+0

'; mgr.updateAppWidget (ToggleWidget.appWidgetId, ToggleWidget.remoteViews); ' – DoubleP90

+2

@ DoubleP90 본질적으로 읽을 수없는 주석에 코드를 덤핑하는 대신 질문을 업데이트하십시오. –