小部件单击无响应

时间:2015-01-29 12:43:45

标签: java android android-widget

我正在尝试将小部件中的所有视图设置为单击侦听器,该侦听器应该在单击时打开一个活动,但现在看来它不起作用。有人能告诉我我做错了什么吗?

这是我的代码:

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

}

和我的小部件布局:

<?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 个答案:

答案 0 :(得分:2)

在这里,您要设置appwidgetId的点击待处理意图,但这应该是视图ID。

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

像:

如果Button的ID为R.id.button1。如果要将单击侦听器设置为该按钮,则在窗口小部件布局中。那应该是这样的:

 RemoteViews views = new RemoteViews(context.getPackageName(),
                        R.layout.widget_layout);
    views.setOnClickPendingIntent(R.id.button1, pendingIntent);
相关问题