2015-01-29 5 views
1

클릭 할 때 활동을 열어야하는 클릭 수신기 인 위젯에있는 모든보기로 설정하려고 시도하고 있습니다. 그러나 지금은 작동하지 않는 것 같습니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?위젯 클릭 응답 없음

public class AthanWidget extends AppWidgetProvider { 

    private SharedPreferences prefs; 
    private boolean PAID = false; 

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
      int[] appWidgetIds) { 
     final int N = appWidgetIds.length; 

     prefs = context.getSharedPreferences(context.getPackageName(), 
       Context.MODE_PRIVATE); 
     SimpleDateFormat sdf = new SimpleDateFormat("EEE, MMM d, yyyy"); 
     String currentDateandTime = sdf.format(new Date()); 
     PAID = prefs.getBoolean(Constants.ITEM_PURCHASED, false); 

     // TODO CHECK IF IMAGE IS FROM SD OR A RESOURCE IS 

     // Perform this loop procedure for each App Widget that belongs to this 
     // provider 

     for (int i = 0; i < N; i++) { 
      int appWidgetId = appWidgetIds[i]; 

      // Create an Intent to launch ExampleActivity 
      Intent intent; 
      if (!PAID) { 
       intent = new Intent(context, RemoveAds.class); 
      } else { 
       intent = new Intent(context, Main.class); 
      } 
      PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, 
        intent, 0); 

      // Get the layout for the App Widget and attach an on-click listener 
      // to the button 
      RemoteViews views = new RemoteViews(context.getPackageName(), 
        R.layout.widget_layout); 

      views.setOnClickPendingIntent(appWidgetId, pendingIntent); 

      views.setTextViewText(R.id.widget_date_title, currentDateandTime); 
      views.setTextViewText(R.id.widget_arabic_date_title, arabianDate()); 

      displayPrayerTimes(views); 
      if (prefs.getInt(Constants.BG_ID_PREFS, 1) < 0) { 
       Bitmap myBitmap = BitmapFactory.decodeFile(prefs.getString(
         Constants.BG_SD_PATH, "")); 
       views.setImageViewBitmap(R.id.widget_bg, myBitmap); 
      } else { 
       views.setImageViewResource(R.id.widget_bg, 
         prefs.getInt(Constants.BG_ID_PREFS, R.drawable.bg24)); 
      } 

      // Tell the AppWidgetManager to perform an update on the current app 
      // widget 
      appWidgetManager.updateAppWidget(appWidgetId, views); 
     } 
    } 

    private void displayPrayerTimes(RemoteViews views) { 
     if (PAID) { 
      views.setTextViewText(
        R.id.widget_fajr, 
        prefs.getString(Constants.FARJ_ID + "w", "DISABLED").split(
          ",")[0]); 
      views.setTextViewText(R.id.widget_dhurh, 
        prefs.getString(Constants.DHUHR_ID + "w", "DISABLED") 
          .split(",")[0]); 
      views.setTextViewText(
        R.id.widget_isha, 
        prefs.getString(Constants.ISHA_ID + "w", "DISABLED").split(
          ",")[0]); 
      views.setTextViewText(
        R.id.widget_asr, 
        prefs.getString(Constants.ASR_ID + "w", "DISABLED").split(
          ",")[0]); 
     } 

     views.setTextViewText(
       R.id.widget_shorrok, 
       prefs.getString(Constants.SHORROK_ID + "w", "DISABLED").split(
         ",")[0]); 
     views.setTextViewText(
       R.id.widget_maghrib, 
       prefs.getString(Constants.MAGHRIB_ID + "w", "DISABLED").split(
         ",")[0]); 
    } 

    private String arabianDate() { 
     Date date = new Date(); // هنا التاريخ الصليبي 
     Calendar cl = Calendar.getInstance(); 
     cl.setTime(date); 
     final String[] iMonthNames = { "Muharram", "Safar", "Rabi'ul Awwal", 
       "Rabi'ul Akhir", "Jumadal Ula", "Jumadal Akhira", "Rajab", 
       "Sha'ban", "Ramadan", "Shawwal", "Dhul Qa'ada", "Dhul Hijja" }; 

     Chronology iso = ISOChronology.getInstanceUTC(); 
     Chronology hijri = IslamicChronology.getInstanceUTC(); 

     LocalDate todayIso = new LocalDate(cl.get(Calendar.YEAR), 
       cl.get(Calendar.MONTH) + 1, cl.get(Calendar.DAY_OF_MONTH), iso); 
     LocalDate todayHijri = new LocalDate(todayIso.toDateTimeAtStartOfDay(), 
       hijri); 

     return todayHijri.getDayOfMonth() + " " 
       + iMonthNames[todayHijri.getMonthOfYear()] + " " 
       + todayHijri.getYear(); 
    } 

} 

내 위젯 레이아웃 :

여기 내 코드는 appwidgetId에 대한 의도 보류 클릭을 설정하고 여기

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/widget_bg" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:alpha=".85" 
     android:contentDescription="@string/app_name" 
     android:scaleType="centerCrop" /> 

    <TextView 
     android:id="@+id/widget_toptext" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:paddingTop="10dp" 
     android:text="@string/widget_title" 
     android:textColor="@android:color/white" 
     android:textSize="15sp" /> 

    <TextView 
     android:id="@+id/widget_date_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/widget_toptext" 
     android:layout_centerHorizontal="true" 
     android:textColor="@android:color/white" 
     android:textSize="15sp" /> 

    <TextView 
     android:id="@+id/widget_arabic_date_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/widget_date_title" 
     android:layout_centerHorizontal="true" 
     android:textColor="@android:color/white" 
     android:textSize="15sp" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:background="#80000000" 
     android:baselineAligned="false" 
     android:orientation="horizontal" 
     android:paddingBottom="10dp" 
     android:paddingTop="10dp" > 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:drawableEnd="@drawable/w_pray_sun_up" 
       android:drawableRight="@drawable/w_pray_sun_up" 
       android:gravity="bottom" 
       android:paddingRight="2dp" 
       android:text="@string/ar_fajr" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

      <TextView 
       android:id="@+id/widget_fajr" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/voir" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/fajr" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 
     </LinearLayout> 

     <TextView 
      android:layout_width="1dp" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="5dp" 
      android:layout_marginTop="5dp" 
      android:background="@android:color/white" /> 
     <!-- delete this --> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:drawableEnd="@drawable/w_pray_sun_up" 
       android:drawableRight="@drawable/w_pray_sun_up" 
       android:gravity="bottom" 
       android:paddingRight="2dp" 
       android:text="@string/ar_shorok" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

      <TextView 
       android:id="@+id/widget_shorrok" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/voir" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/shorrok" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 
     </LinearLayout> 

     <TextView 
      android:layout_width="1dp" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="5dp" 
      android:layout_marginTop="5dp" 
      android:background="@android:color/white" /> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:drawableEnd="@drawable/w_pray_dhurh" 
       android:drawableRight="@drawable/w_pray_dhurh" 
       android:gravity="bottom" 
       android:paddingRight="2dp" 
       android:text="@string/ar_dhuhr" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

      <TextView 
       android:id="@+id/widget_dhurh" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/voir" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/dhuhr" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 
     </LinearLayout> 

     <TextView 
      android:layout_width="1dp" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="5dp" 
      android:layout_marginTop="5dp" 
      android:background="@android:color/white" /> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:drawableEnd="@drawable/w_pray_asr" 
       android:drawableRight="@drawable/w_pray_asr" 
       android:gravity="bottom" 
       android:paddingRight="2dp" 
       android:text="@string/ar_asr" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

      <TextView 
       android:id="@+id/widget_asr" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/voir" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/asr" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 
     </LinearLayout> 

     <TextView 
      android:layout_width="1dp" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="5dp" 
      android:layout_marginTop="5dp" 
      android:background="@android:color/white" /> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:drawableEnd="@drawable/w_pray_maghreb" 
       android:drawableRight="@drawable/w_pray_maghreb" 
       android:gravity="bottom" 
       android:paddingRight="2dp" 
       android:text="@string/ar_magrib" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

      <TextView 
       android:id="@+id/widget_maghrib" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/voir" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/maghrib" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 
     </LinearLayout> 

     <TextView 
      android:layout_width="1dp" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="5dp" 
      android:layout_marginTop="5dp" 
      android:background="@android:color/white" /> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:drawableEnd="@drawable/w_pray_moon" 
       android:drawableRight="@drawable/w_pray_moon" 
       android:gravity="bottom" 
       android:paddingRight="2dp" 
       android:text="@string/ar_isha" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

      <TextView 
       android:id="@+id/widget_isha" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/voir" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/isha_a" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 
     </LinearLayout> 

     <!-- end of deletion --> 
    </LinearLayout> 

</RelativeLayout> 
+1

show widget layout 및 total app widget provider 코드. –

+0

@NoName 질문은 전체 코드 –

답변

2

,하지만보기 ID가 있어야합니다. 같은

RemoteViews views = new RemoteViews(context.getPackageName(), 
        R.layout.widget_layout); 
views.setOnClickPendingIntent(appWidgetId, pendingIntent); 

:

는 버튼의 id는 R.id.button1 경우. 이 버튼은 클릭 리스너를 해당 버튼으로 설정하려는 경우 위젯 레이아웃에 있습니다. 그러면 다음과 같아야합니다.

RemoteViews views = new RemoteViews(context.getPackageName(), 
         R.layout.widget_layout); 
    views.setOnClickPendingIntent(R.id.button1, pendingIntent); 
+0

으로 업데이트되었습니다. for 루프 때문에 코드 줄이 적은 위젯 내부의 모든보기에 onclick 수신기를 추가 할 수 있다고 생각했습니다. –