7

Widget'ımı tıklanabilir hale getirirken sorun yaşıyorum. Aşağıdaki kod kısmen çalışıyor. Widget'ım Öğeler ile bir ListView gösterir. Hiçbir Öğe görüntülenmediğinde Widget tıklandığında, Niyet çalışır ve Etkinlik başlar. Ancak ListView öğesinin üzerine tıklandığında hiçbir şey olmuyor. WidgetProvicer: Burada Android tıklanabilir Widget ListView ile tıklanamaz ListItems'de tıklanamaz

Kod olan

public void onUpdate(final Context context, final AppWidgetManager appWidgetManager, final int[] appWidgetIds) { 


    for (final int iD : appWidgetIds) { 

     final RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout 
       .widget_layout); 

     final Intent intent = new Intent(context, TickWidgetService.class); 
     intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, iD); 
     intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME))); 
     remoteViews.setRemoteAdapter(R.id.WidgetItem, intent); 

     remoteViews.setEmptyView(R.id.WidgetItem, R.id.empty_view); 

     final Intent activityIntent = new Intent(context, MainActivity.class); 
     final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, activityIntent, 0); 

     remoteViews.setOnClickPendingIntent(R.id.Widget, pendingIntent); 


     appWidgetManager.updateAppWidget(iD, remoteViews); 
     appWidgetManager.notifyAppWidgetViewDataChanged(iD, R.id.WidgetItem); 
    } 

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

widget_layout.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/Widget" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 
<ListView 
    android:id="@+id/WidgetItem" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:divider="#D3D3D3" 
    android:dividerHeight="1dp"/> 


<TextView 
    android:id="@+id/empty_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/darker_gray" 
    android:gravity="center" 
    android:text="@string/emptytext" 
    android:visibility="gone"/> 
</LinearLayout> 

ListViewItems hiçbir Düğmeleri ya da bir şey var.

Yardımlarınız için teşekkürler!

+0

liste görünümü kalemleri kullanılamaz mı? Çünkü tıklama olaylarını yakaladıklarını düşünüyorum. Listview bağdaştırıcısında veya sth isAllItemsEnabled() geçersiz kılarak mı? – Beloo

+0

Bir Bağdaştırıcı kullanmıyorum. Benim bir RemoteViewsFactory var. GetViewAt() Yönteminde, içeriği RemoteView'a ekliyorum, RemoteView bir ListItem'dir. – Tobi

cevap

3

nihayet çalışıyor:

Profider OnUpdate içinde:

final Intent activityIntent = new Intent(context, MainActivity.class); 
final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, activityIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
remoteViews.setPendingIntentTemplate(R.id.WidgetItem, pendingIntent); 

ve ViewsFactory getViewAt içinde:

Bundle infos = new Bundle(); 
infos.putInt(TickWidgetProvider.WIDGET_LISTID, this.listId); 
final Intent activityIntent = new Intent(); 
activityIntent.putExtras(infos); 

remoteView.setOnClickFillInIntent(R.id.widgetListItemLayout, activityIntent); 
Nerede bulduğumu

Bilmiyorum, ama bu örnek yardımcı çalışmamı sağladım: https://github.com/commonsguy/cw-advandroid/tree/master/AppWidget/LoremWidget

+0

MainActivity'deki amaç boyunca tıklama olayını yakalayarak çalıştım. OnReceive() 'da bunu almanın bir yolu var mı? Denedim ama işe yaramadı. :( –

İlgili konular