मैंने घंटों के लिए उत्तर की तलाश की है और आखिरकार मैंने इसे समझ लिया है। अपने AppWidgetProvider में, अपने विजेट में ऑनअपडेट, लूप में, और प्रत्येक विजेट के लिए, एक इरादा बनाएं (इसमें विजेट आईडी और कुछ डेटा इसे अनन्य बनाने के लिए, इरादे की तरह) बनाने के लिए जोड़ें, फिर एक लंबितइन्टेंट बनाएं और इसे असाइन करें वह दृश्य जहां आप क्लिक श्रोता बनाना चाहते हैं।
for(int i = 0; i<appWidgetIds.length; i++) {
Intent serviceIntent = new Intent(context, MyService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
PendingIntent pendingServiceIntent = PendingIntent.getService(context, 0, serviceIntent, PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setOnClickPendingIntent(R.id.refresh, pendingServiceIntent);
context.startService(serviceIntent);
appWidgetManager.updateAppWidget(appWidgetIds[i], views);
}
मेरी विशिष्ट मामले में मैं दो क्लिक श्रोता, एक ताज़ा करने के लिए और एक सेटिंग्स गतिविधि शुरू करने के लिए किया था, इसलिए यदि आप एक गतिविधि शुरू करने के लिए चाहते हैं तो बस PendingIntent.getActivity का उपयोग करें और Intent.FLAG_ACTIVITY_NEW_TASK झंडा जोड़ें।
दो संयुक्त:
for(int i = 0; i<appWidgetIds.length; i++) {
Intent serviceIntent = new Intent(context, MyService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
PendingIntent pendingServiceIntent = PendingIntent.getService(context, 0, serviceIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Intent settingsIntent = new Intent(context, SettingsActivity.class);
settingsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
settingsIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
settingsIntent.setData(Uri.parse(settingsIntent.toUri(Intent.URI_INTENT_SCHEME)));
PendingIntent pendingSettingsIntent = PendingIntent.getActivity(context, 0, settingsIntent, PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setOnClickPendingIntent(R.id.title, pendingSettingsIntent);
views.setOnClickPendingIntent(R.id.refresh, pendingServiceIntent);
context.startService(serviceIntent);
appWidgetManager.updateAppWidget(appWidgetIds[i], views);
}
आशा इस किसी की मदद करेंगे। :)
मैंने कोशिश की लेकिन यह अभी भी सूची को रीफ्रेश नहीं करता है :(यहां मेरा है http://stackoverflow.com/questions/39388686/how-to-refresh-widget-listview-when-button-refresh-is-clicked/39389295 # 39389295 – natsumiyu