Turkcell | Geleceği Yazanlar

Widget için click olayı

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.

    0

    Hasan

    04 Şubat 2015

    Merhaba,

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

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

    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;

    public static String WIDGET_BUTTON = "paket_ismi.WIDGET_BUTTON";

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

    
    
    
    	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);
    	 }
    	}
    
    
    	

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

    
    
    
    	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);
    	 }
    	}
    
    
    	

    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..

      ufukzimmerman

      Per, 30/03/2017 - 23:12
      Dediğiniz her şeyi yapmama rağmen olmadı

    0

    Ahmet Burak Demirkoparan

    04 Şubat 2015

    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

    Bu soruya cevap vermek için üye olmanız veya giriş yapmanız gerekmektedir.