अपडेट नहीं करता है मेरे विजेटिस में टेक्स्ट व्यू होम स्क्रीन पर रखे जाने पर सही जानकारी के साथ सही तरीके से सेट किया गया है। लेकिन जब मैं मुख्य ऐप में जानकारी अपडेट करता हूं, तो विजेट अभी भी पुरानी जानकारी दिखाता है।एंड्रॉइड विजेट में टेक्स्ट व्यू
मैनिफ़ेस्ट:
<receiver android:name=".WidgetProvider" android:label="@string/app_name" android:exported="false">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widget" />
</receiver>
WidgetProvider.java:
package com.example.huskeliste;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
public class WidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
int widgetId = appWidgetIds[i];
DBAdapter info = new DBAdapter(context);
info.open();
String data = info.getTextViewData();
info.close();
Intent intent = new Intent(context, Main.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.setOnClickPendingIntent(R.id.loWidget, pendingIntent);
views.setTextViewText(R.id.txtView, data);
appWidgetManager.updateAppWidget(widgetId, views);
}
}
}
रेस - widget.xml:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/widget"
android:minWidth="294dp"
android:minHeight="72dp"
android:updatePeriodMillis="1800000">
</appwidget-provider>
लेआउट - widget.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loWidget"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_margin="1dp"
android:background="@drawable/background">
<TextView
android:id="@+id/txtView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="22dp"
android:textColor="#ffffff"
android:text="" />
</LinearLayout>
background.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#CC111111" android:endColor="#CC111111" android:angle="0" />
<padding android:left="4dp" android:top="1dp" android:right="4dp" android:bottom="1dp" />
<corners android:radius="3dp" />
</shape>
getTextViewData() DBAdapter.java से:
public String getTextViewData() {
String[] columns = new String[] { KEY_NAME };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
String result = "";
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
if (result.length() > 0) {
result += ", ";
}
result += c.getString(0);
}
return result;
}
किसी को भी एक सुराग क्या मेरी कोड में कमी है है?
तेजी से answere के लिए धन्यवाद। Main.java में इरादा अद्यतन में "संदर्भ" अद्यतन Widget = नया इरादा (संदर्भ, WidgetProvider.class); खाली है। मुझे संदर्भ कैसे सेट करना चाहिए? – user1759708
संदर्भ के साथ चिह्नित किया गया है "संदर्भ को चर के लिए हल नहीं किया जा सकता है"। – user1759708
यह आपका गतिविधि संदर्भ है। आप 'getBaseContext()' या 'this' का उपयोग कर सकते हैं। –