0

我创建了一个简单的应用程序,其中一个活动中有 3 个图像按钮。这些按钮正在执行一些操作。此外,我想在主屏幕上创建一个具有 3 个按钮的小部件,该小部件执行与活动中的 imageButtons 相同的操作。我已经阅读了很多教程,但找不到合适的教程。

小部件如下所示:

在此处输入图像描述

XML 代码:

<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:orientation="horizontal"
  android:background="@drawable/my_shape"
  android:layout_gravity="center"
  android:layout_height="wrap_content">

  <ImageButton
   android:id="@+id/imageButton1"
   android:layout_width="52dip"
   android:layout_height="50dip"
   android:layout_gravity="center_horizontal|center"
   android:src="@drawable/ic_launcher" />

  <ImageButton
   android:id="@+id/imageButton2"
   android:layout_width="52dip"
   android:layout_height="50dip"
   android:layout_gravity="center_horizontal|center"
   android:src="@drawable/ic_launcher" />

  <ImageButton
   android:id="@+id/imageButton3"
   android:layout_width="52dip"
   android:layout_height="50dip"
   android:layout_gravity="center_horizontal|center"
   android:src="@drawable/ic_launcher" />

  <ImageButton
   android:id="@+id/imageButton3"
   android:layout_width="52dip"
   android:layout_height="50dip"
   android:layout_gravity="center_horizontal|center"
   android:src="@drawable/ic_launcher" />

   </LinearLayout>

res/xml 中的 Widget_info.xml:

 <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
 android:minWidth="146dip"
 android:minHeight="72dip"
 android:updatePeriodMillis="0"
 android:initialLayout="@layout/widget_layout"/>

我在清单文件中也有小部件的详细信息。

我这里没有包含活动代码。在活动中有 3 个 imageButton onclick 方法,我希望小部件按钮(3 个按钮)完全执行这些操作。

请任何人都可以指导我。提前致谢

4

2 回答 2

1

您可以借助setOnClickPendingIntent.

public class Widget extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        final int N = appWidgetIds.length;
        for (int i = 0; i < N; i++) {
            int appWidgetId = appWidgetIds[i];
                    // For first image
            Intent intent = new Intent(context, SplashActivity.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
                    intent, 0);
            RemoteViews views = new RemoteViews(context.getPackageName(),
                    R.layout.appwidget);
            views.setOnClickPendingIntent(R.id.imageButton1, pendingIntent);
                    //For second Image
            Intent intent1 = new Intent(context, HomeActivity.class);
            PendingIntent pendingIntent1 = PendingIntent.getActivity(context, 0,
                    intent1, 0);
            views.setOnClickPendingIntent(R.id.imageButton2, pendingIntent1);

                    // like wise you can add your consecutive classes.

            appWidgetManager.updateAppWidget(appWidgetId, views);
        }

    }
}

我希望这能帮到您。

于 2013-06-06T07:10:29.537 回答
0

在我的 HomeActivity 中:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    imgbtn1=(ImageButton)findViewById(R.id.imageCallButton1);
    imgbtn2=(ImageButton)findViewById(R.id.imageFBButton1);
    imgbtn3=(ImageButton)findViewById(R.id.imageSmsButton1);

    imgbtn1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "U clicked on Call Button", Toast.LENGTH_LONG).show();
        }
    });
  imgbtn2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "U clicked on FB Button", Toast.LENGTH_LONG).show();
        }
    });
   imgbtn3.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        Toast.makeText(getApplicationContext(), "U clicked on SMS Button", Toast.LENGTH_LONG).show();
    }
});
    }

在我的 MyWidgetProvider 活动中:

public class MyWidgetProvider extends AppWidgetProvider {

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
    // TODO Auto-generated method stub
       //what should be added here
    super.onUpdate(context, appWidgetManager, appWidgetIds);
  }
         }
于 2013-06-06T07:42:09.447 回答