android - onGetViewFactory not called after onUpdate -


i'm having trouble setting widget app, whenever try add widget home screen onreceive being called , right after onupdate being called - after onupdate finishes - custom remoteviewsservice not called @ all...

noteswidgetprovider.class

public class noteswidgetprovider extends appwidgetprovider {  @override public void onupdate(context context, appwidgetmanager appwidgetmanager, int[] appwidgetids) {     (int appwidgetid : appwidgetids) {         remoteviews views = new remoteviews(context.getpackagename(), r.layout.notes_widget);         intent intent = new intent(context, noteswidgetservice.class);         views.setremoteadapter(r.id.widget_notes, intent);          intent clickintent = new intent(context, noteactivity.class);         pendingintent clickpendingintenttemplate = taskstackbuilder.create(context)                 .addnextintentwithparentstack(clickintent)                 .getpendingintent(0, pendingintent.flag_update_current);         views.setonclickpendingintent(r.id.widget_notes, clickpendingintenttemplate);          appwidgetmanager.notifyappwidgetviewdatachanged(appwidgetid, r.id.widget_notes);          appwidgetmanager.updateappwidget(appwidgetid, views);     } }  @override public void onreceive(context context, intent intent) {     final string action = intent.getaction();     if (action.equals(appwidgetmanager.action_appwidget_update)) {         appwidgetmanager mgr = appwidgetmanager.getinstance(context);         componentname cn = new componentname(context, noteswidgetprovider.class);         mgr.notifyappwidgetviewdatachanged(mgr.getappwidgetids(cn), r.id.widget_notes);     }     super.onreceive(context, intent); }  public static void sendrefreshbroadcast(context context) {     intent intent = new intent(appwidgetmanager.action_appwidget_update);     intent.setcomponent(new componentname(context, noteswidgetprovider.class));     context.sendbroadcast(intent); } } 

noteswidgetservice.class

public class noteswidgetservice extends remoteviewsservice {  @override public remoteviewsfactory ongetviewfactory(intent intent) {     return new notesremoteviewsfactory(this.getapplicationcontext(), intent); }  public class notesremoteviewsfactory implements remoteviewsservice.remoteviewsfactory {      private context mcontext;     private cursor mcursor;      public notesremoteviewsfactory(context applicationcontext, intent intent) {         mcontext = applicationcontext;     }      @override     public void oncreate() {      }      @override     public void ondatasetchanged() {         if (mcursor != null) {             mcursor.close();         }         final long identitytoken = binder.clearcallingidentity();         uri uri = dbhandler.content_uri;         string [] projection = {constants.title_col, constants.content_col, constants.color_col, constants.date_col};         mcursor = mcontext.getcontentresolver().query(uri, projection, null, null, null);         binder.restorecallingidentity(identitytoken);     }      @override     public void ondestroy() {         if (mcursor != null) {             mcursor.close();         }     }      @override     public int getcount() {         return mcursor == null ? 0 : mcursor.getcount();     }      @override     public remoteviews getviewat(int i) {         if (i == adapterview.invalid_position || mcursor == null || !mcursor.movetoposition(getcount() - 1 - i)) {             return null;         }         remoteviews rv = new remoteviews(mcontext.getpackagename(), r.layout.widget_item);         rv.settextviewtext(r.id.widget_note_title, mcursor.getstring(mcursor.getcolumnindex(constants.title_col)));         rv.settextviewtext(r.id.widget_note_content, mcursor.getstring(mcursor.getcolumnindex(constants.content_col)));         rv.setint(r.id.widget_note_body, "setbackgroundcolor", color.parsecolor(mcursor.getstring(mcursor.getcolumnindex(constants.color_col))));         intent fillinintent = new intent();         fillinintent.putextra(constants.position_col, getcount() - 1 - i);         fillinintent.putextra("code", noteactivity.edit_code);         rv.setonclickfillinintent(r.id.widget_note_body, fillinintent);         return rv;     }      @override     public remoteviews getloadingview() {         return null;     }      @override     public int getviewtypecount() {         return 1;     }      @override     public long getitemid(int i) {         return mcursor.movetoposition(i) ? mcursor.getlong(0) : i;     }      @override     public boolean hasstableids() {         return true;     } } } 

manifest

<receiver         android:name=".widget.noteswidgetprovider"         android:label="@string/your_notes">         <intent-filter>             <action android:name="android.appwidget.action.appwidget_update" />         </intent-filter>          <meta-data             android:name="android.appwidget.provider"             android:resource="@xml/notes_widget_info" />     </receiver>      <service         android:name=".widget.noteswidgetservice"         android:permission="android.permission.bind_remoteviews"         android:exported="false"/> 

notes_widget_info.xml

<?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:initiallayout="@layout/notes_widget" android:minheight="180dp" android:minwidth="110dp" android:previewimage="@drawable/example_appwidget_preview" android:resizemode="horizontal|vertical" android:updateperiodmillis="3600000" android:widgetcategory="home_screen"/> 

what missing? can figure out?

update

i figured out problem used appcompat.imagebutton instead of imagebutton, ongetviewfactory called - when reaching ongetviewfactory widget changes "problem loading widget".


Comments

Popular posts from this blog

neo4j - finding mutual friends in a cypher statement starting with three or more persons -

php - How to remove letter in front of the word laravel -

minify - Minimizing css files -