向AppWidget中添加button监听事件

由于AppWidget和我们的应用程序运行在不同的进程当中,(AppWidget当中的View 运行在Home Screen进程当中)所以无法用setOnClickListener方法绑定监听器。
看代码
package com.AppWidgetDemo;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {
         /** Called when the activity is first created. */
        @Override
         public void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
        }
}
package com.AppWidgetDemo;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity02 extends Activity {

  @Override
   protected void onCreate(Bundle savedInstanceState) {
     // TODO Auto-generated method stub
     super.onCreate(savedInstanceState);
    setContentView(R.layout.main2);
  }

}
package com.AppWidgetDemo;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;

public class AppWidgetDemo extends AppWidgetProvider {

  @Override
   public void onDeleted(Context context, int[] appWidgetIds) {
    System.out.println( "onDeleted");
     super.onDeleted(context, appWidgetIds);

  }

  @Override
   public void onDisabled(Context context) {
    System.out.println( "onDisabled");
     super.onDisabled(context);
  }

  @Override
   public void onEnabled(Context context) {
    System.out.println( "onEnabled");
     super.onEnabled(context);
  }

  @Override
   public void onReceive(Context context, Intent intent) {
    System.out.println( "onReceive");
     super.onReceive(context, intent);
  }

  @Override
   // appWidgetIds表示在桌面添加相同widget的个数
   public void onUpdate(Context context, AppWidgetManager appWidgetManager,
       int[] appWidgetIds) {
     // 在widget界面触发监听事件,切换界面等功能
     for ( int i = 0; i < appWidgetIds.length; i++) {
       // 有几个widget就循环几次
      System.out.println(appWidgetIds[i]);
       // 创建Intent对象从context跳转到指定的Activity
      Intent intent = new Intent(context, MainActivity02. class);
       // 创建一个PendingIntent对象,通过getActivity()获得,了解4个参数的含义
       // pendingIntent如同包装盒,将真正的intent对象放在里面,等到需要的时候触发事件
      PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
          intent, 0);
       // 创建RemoteViews对象表示appWidget里面所有的控件
      RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
          R.layout.appwidget);
       // 当出现pendingIntent时候触发相关监听事件
       // 第二个参数用来指定是哪个pendingIntent将会被执行
      remoteViews.setOnClickPendingIntent(R.id.button_app, pendingIntent);
       // 指定要更新哪一个AppWidget
      appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);

    }
  }

}

你可能感兴趣的:(向AppWidget中添加button监听事件)