Android - 当我们点击应用程序的主屏幕小部件时,我们如何调用某些特定功能?

时间:2011-04-21 17:37:55

标签: android methods widget imageview homescreen

我正在创建一个具有简单主屏幕小部件的应用程序(简单的图像视图)。

每当我点击主屏幕上的这个imageview小部件时,我想要的是调用一些特定的函数,比如abc()或xyz()。

我已经经历了这么多的例子,但没有找到一个可以教我这个的例子,90%的例子都使用TextView,它有一个函数setTextViewText所以TextView一个很简单,但是当我们调用一些特定的函数时单击imageview或如何设置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();
}
}

HEre是我的更新方法 -

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

答案 0 :(得分:3)

Varundroid,

我认为您不能在Widget点击时启用特定功能,但您可以使用Activity启动PendingIntent。这就是我的当前设置方式,Widge包含的所有内容都是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>

答案 1 :(得分:-5)

我不明白你的问题是什么,但你上面提到的问题答案非常简单 喜欢

实例化imageview
ImageView imgView=findViewById(R.id.imgView);

然后将onClickListner设置为

imgView.setOnClickListener(new view.OnClickListener(){

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