Android - Как мы можем вызвать какую-то конкретную функцию, когда нажимаем на виджет главного экрана приложения? - PullRequest
2 голосов
/ 21 апреля 2011

Я создаю приложение, которое будет иметь простой виджет домашнего экрана (Простое изображение).

Я хочу вызывать какую-то конкретную функцию, например, abc () или xyz (), всякий раз, когда я нажимаю на этот виджет изображения на моем рабочем столе.

Я прошел через очень много примеров, но не нашел ни одного, который мог бы научить меня этому, и 90% примера использовали TextView, у которого есть функция setTextViewText, поэтому TextView one прост, но как вызвать некоторую конкретную функцию, когда мы нажмите на просмотр изображений или как установить onClick for ImageButton.

Пожалуйста, помогите, и я был бы очень признателен, если бы вы предоставили мне какой-то кусок кода.

Спасибо.

public class Sample extends Activity {

public static final String TAG = "Sample";
public void onCreate(Bundle saveInstanceState)
{
    Log.e(TAG, "I am HERE");
    Toast.makeText(this, "You Just Pressed Me", Toast.LENGTH_LONG).show();
}
}

Вот мой метод обновления -

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
    for(int i = 0; i < appWidgetIds.length; i++)
     {
         int appWidgetId = appWidgetIds[i];
         Intent intent = new Intent(context, Sample.class);
         //intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
         //intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
         PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
         RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.hswidget);
         views.setOnClickPendingIntent(R.id.widget, pendingIntent);

         appWidgetManager.updateAppWidget(appWidgetId, views);
     }
}

Ответы [ 2 ]

3 голосов
/ 21 апреля 2011

Varundroid,

Я не думаю, что вы можете запустить конкретную функцию при нажатии Widget, но вы можете запустить Activity с помощью PendingIntent.Вот как моя сейчас настроена, и все, из чего состоит Widge t - это ImageView.Вот моя реализация ...

XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView 
        android:layout_width="64dp" 
        android:layout_height="64dp"
        android:src="@drawable/icon" 
        android:id="@+id/widget_image" 
        android:scaleType="centerCrop"
        android:layout_centerInParent="true"/>

</RelativeLayout>

Код:

public class WidgetProvider extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        final int N = appWidgetIds.length;
        for (int i=0; i<N; i++) {
            int appWidgetId = appWidgetIds[i];

            /* Create the PendingIntent for a QuickNote */
            Intent intent = new Intent(context, ItemEdit.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_provider);
            views.setOnClickPendingIntent(R.id.widget_image, pendingIntent);

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

Не забудьте AndroidManifest.xml!

    <receiver android:name=".WidgetProvider">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>
        <meta-data android:name="android.appwidget.provider"
           android:resource="@xml/appwidget_provider" />
    </receiver>
0 голосов
/ 21 апреля 2011

Я не понимаю, в чём ваша проблема, но у упомянутой выше проблемы есть очень простой ответ лайк создание экземпляра для просмотра изображений

ImageView imgView=findViewById(R.id.imgView);

и затем установите onClickListner на

imgView.setOnClickListener(new view.OnClickListener(){

public void onClick(View view){
//call your functions
}
}
);
...