Soru & Cevap

Widget için click olayı

04.02.2015 - 12:18

Merhaba arkadaşlar. Oluşturulan bir widgette click olayını nasıl yakalayabilirim? Araştırdım fakat türkçe kaynak sıfır. Yabancı sitelerdeki kaynaklarda ise harfiyen uygulamama rağmen süreksi sorunlar yaşadım.

13 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user bdkhsn
bdkhsn
04.02.2015 - 10:34

Merhaba,

Öncelikle manifest dosyasında buton için bir action oluşturman gerekiyor aşağıdaki gibi;

[code]<action android:name="paket_ismi.WIDGET_BUTTON" />[/code]

Daha sonra widget için oluşturduğun class da manifest dosyasında belirttiğin action olayı için bir string değişken oluşturalım;

[code]public static String WIDGET_BUTTON = "paket_ismi.WIDGET_BUTTON";[/code]

Daha sonra aynı class ın onUpdate metodunda aşağıdaki gibi bir tanımlama yapmak gerekmektedir;

[code]

public void onUpdate(Context context, AppWidgetManager appWidgetManager,
   int[] appWidgetIds) {
    for(int i=0; i<appWidgetIds.length; i++){
      int currentWidgetId = appWidgetIds[i];     
      
      RemoteViews views = new RemoteViews(context.getPackageName(),
      R.layout.widgetpage);
      
      Intent fIntent = new Intent(WIDGET_BUTTON);
      PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, fIntent, PendingIntent.FLAG_UPDATE_CURRENT);
      views.setOnClickPendingIntent(R.id.next, pendingIntent );//R.id.next widget daki next butonuna bir event tanımladığımızı işaret eder.
      
      appWidgetManager.updateAppWidget(currentWidgetId,views);
    }
}

[/code]

Daha sonra onReceive metodunda aşağıdaki gibi bir kod olması lazım;

[code]

public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    super.onReceive(context, intent);
    
    if (WIDGET_BUTTON.equals(intent.getAction())) {
        //your code here
        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
        RemoteViews views = new RemoteViews(context.getPackageName(),
                  R.layout.widgetpage);
        views.setTextViewText(R.id.textView1, "butona tıklandı");
        ComponentName thisWidget = new ComponentName(context, widget_page.class);
        appWidgetManager.updateAppWidget(thisWidget, views);
    }
}

[/code]

Burada widgetta bir butona tıklandığında yine widget üzerinde yer alan bir textview in değeri değiştirilmiştir. İşine yaraması dileğiyle, kolay gelsin..

Ufuk
30.03.2017 - 11:12
Dediğiniz her şeyi yapmama rağmen olmadı
picture-1372-1408467635.jpg
ahmtbrk
04.02.2015 - 08:01

Merhaba

Daha önce widget yapımıyla hiç ilgilenmedim fakat senin için şöyle bir baktım

http://wptrafficanalyzer.in/blog/android-home-screen-app-widget-with-onclick-event/

bu kaynak işini görür kanısındayım