2009-10-15 4 views
2

J'ai un problème alors en essayant de mettre une intention avec AppWidgetManager.ACTION_APPWIDGET_PICK il y a un problème quelque part dans l'écosystème android AppWidget comme je peux le voir dans les journaux. Alors que je fais mal?
Voir le code d'échantillon et trace de la pile ci-dessous traceAndroid: NPE en essayant d'activitéForResult avec ACTION_APPWIDGET_PICK intention

public class NPEDemoActivity extends Activity { 

    private final static int HOST_CODE = 1024; 

    private AppWidgetHost host; 
    private AppWidgetManager manager; 
    private int PICK_WIDGET_RC = 1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);   
     setContentView(R.layout.main); 
     host = new AppWidgetHost(this, HOST_CODE); 
     host.startListening(); 
     manager = AppWidgetManager.getInstance(this); 
     Button b = (Button)findViewById(R.id.Button01); 
     b.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       int nextId = host.allocateAppWidgetId(); 
       Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK);    
       pickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, nextId); 
       startActivityForResult(pickIntent, PICK_WIDGET_RC); 
      } 
     }); 
    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 

stack de chat journal:

10-15 17:33:06.873: ERROR/AndroidRuntime(821): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.AppWidgetPickActivity}: java.lang.NullPointerException 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at android.app.ActivityThread.access$2100(ActivityThread.java:116) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at android.os.Looper.loop(Looper.java:123) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at android.app.ActivityThread.main(ActivityThread.java:4203) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at java.lang.reflect.Method.invoke(Method.java:521) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at dalvik.system.NativeStart.main(Native Method) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821): Caused by: java.lang.NullPointerException 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at com.android.settings.AppWidgetPickActivity.putAppWidgetItems(AppWidgetPickActivity.java:170) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at com.android.settings.AppWidgetPickActivity.putCustomAppWidgets(AppWidgetPickActivity.java:132) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at com.android.settings.AppWidgetPickActivity.getItems(AppWidgetPickActivity.java:208) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at com.android.settings.ActivityPicker.onCreate(ActivityPicker.java:99) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at com.android.settings.AppWidgetPickActivity.onCreate(AppWidgetPickActivity.java:63) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123) 
10-15 17:33:06.873: ERROR/AndroidRuntime(821):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364) 

Une autre petite question, dans laquelle des projets Android ne com.android.settings vivent? (Je suis coincé avec Windows donc je ne peux pas utiliser repo malheureusement) Aide vraiment aprécié.

Répondre

1

On dirait un bug dans les paramètres Android, si vous essayez de choisir appwidget sans widgets supplémentaires spécifiés vous échouez, rempli un problème au code Google link

0

Modifier: parlé trop vite, ne pas voir que c'était une méthode ViewListener. Je ne sais pas si c'est encore nécessaire.


réponse originale:

Vous devriez appeler onClick de la Acitivy dans votre override.

De l'Android docs:..? "Une mise en œuvre de toute méthode du cycle de vie de l'activité doit toujours d'abord appeler la version superclasse

espoir qui résout le problème

+0

Nope ressemble à un bug dans Android, voir ma réponse ci-dessous –

0

Avez-vous déterminé une solution que j'ai J'ai vu des applications qui implémentent le sélecteur de programmes pour exécuter l'hôte AppWidget dans leur activité, et je reçois maintenant cette erreur en déclarant que EXTRA_CUSTOM_INFO n'est pas présent.Je teste certaines choses depuis l'utilisation de la source Launcher et je ferai rapport si je peux contourner le problème. erreur au moins

+0

Eh bien maintenant je viens de créer un widget supplémentaire et cela fonctionne. (Il fonctionne dans l'application de lancement car le widget de recherche n'est pas vraiment un appwidget). Votez bug dans le code Google si vous voulez qu'ils le résolvent parfois –

Questions connexes