2016-02-23 7 views
11

के बाद प्राप्त नहीं हुआ है मेरे पास एक ऐप विजेट है और क्लिक प्रदाता मेरे प्रदाता में onUpdate() में प्राप्त किया जा सकता है।
हालांकि, जब मैं घर लॉन्चर को बंद करने की कोशिश करता हूं, तो क्लिक ईवेंट खो जाता है।
मैंने सभी onEnabled(), onReceived() ... आदि में ब्रेकपॉइंट भी डाले हैं: कनेक्शन खो जाना प्रतीत होता है।एंड्रॉइड ऐपविजेट का बटन क्लिक करें होम लॉन्चर फोर्स स्टॉप

परिणामस्वरूप, मैं बटन ईवेंट को "पुनः कनेक्ट" कैसे कर सकता हूं?

WidgetProvider AppWidgetProvider लागू होता है:

@Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
     Log.d(TAG, "onUpdate()"); 
     Log.d(TAG, "isLoading: " + CONSTANT.isLoading); 
     // update each of the widgets with the remote adapter from updateService 
     // Get all ids 
     ComponentName thisWidget = new ComponentName(context, ScoreWidgetProvider.class); 
     int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget); 

     // Build the intent to call the service 
     Intent intent = new Intent(context.getApplicationContext(), UpdateWidgetService.class); 
     intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, allWidgetIds); 

     // Update the widgets via the service 
     context.startService(intent); 

//  super.onUpdate(context, appWidgetManager, appWidgetIds); 
    } 

UpdateWidgetService Service लागू होता है:

@Override 
     public void onStart(Intent intent, int startId) { 

      Log.i(TAG, "Called"); 

      AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext()); 

      int[] appWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS); 

      for (int i = 0; i < appWidgetIds.length; ++i) { 
       // Here we setup the intent which points to the StackViewService which will 
       // provide the views for this collection. 
       Intent remoteViewsIntent = new Intent(this.getApplicationContext(), ScoreWidgetRemoteViewsService.class); 
       remoteViewsIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]); 
       // When intents are compared, the extras are ignored, so we need to embed the extras 
       // into the data so that the extras will not be ignored. 
       remoteViewsIntent.setData(Uri.parse(remoteViewsIntent.toUri(Intent.URI_INTENT_SCHEME))); 
       RemoteViews rv = new RemoteViews(this.getApplicationContext().getPackageName(), R.layout.widget_layout); 
       rv.setRemoteAdapter(appWidgetIds[i], R.id.score_list, remoteViewsIntent); 

       // Set the empty view to be displayed if the collection is empty. It must be a sibling 
       // view of the collection view. 
       rv.setEmptyView(R.id.score_list, R.id.empty_view); 

       // Bind the click intent for the refresh button on the widget 
       final Intent refreshIntent = new Intent(this.getApplicationContext(), ScoreWidgetProvider.class); 
       refreshIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       refreshIntent.setAction(ScoreWidgetProvider.REFRESH_ACTION); 
       final PendingIntent refreshPendingIntent = PendingIntent 
         .getBroadcast(this.getApplicationContext(), 0, refreshIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
       rv.setOnClickPendingIntent(R.id.btn_refresh, refreshPendingIntent); 

       appWidgetManager.updateAppWidget(appWidgetIds[i], rv); 
      } 

    //  stopSelf(); 

      super.onStart(intent, startId); 
     } 
+0

ऑन-अप सेवा शुरू करें! आप अपने काम कर सकते हैं सेवा –

+1

http://stackoverflow.com/questions/26108355/how-to-start-an-activity-by-the-click-on-an-image-in-widget/26288400#26288400 –

+0

मेरे विजेट में सूचीदृश्य है, इसलिए इसमें पहले से ही कक्षा है जो RemoteViewsService को बढ़ाती है। तो मुझे सेवा पर एक और लिखना है? मेरे संपादित कोड से – jjLin

उत्तर

0

करें कि आप अपने onStart समारोह में सही संदर्भ उपयोग कर रहे हैं। अपने कोड के onStart भाग में getApplicationContext देखें, गलत प्रकार के संदर्भ में गुजरने से त्रुटियां हो सकती हैं। अधिक जानकारी के लिए यहां एक लिंक दिया गया है: Context

संबंधित मुद्दे