关闭

appweight多个按键响应处理

标签: actionbuttonandroidstring
705人阅读 评论(1) 收藏 举报
分类:

    appweight有时候需要响应多出的按键,如多个按钮在同一个weight要同时响应这么多个按钮的时间

肯定不能像在activity里面处理,而是通过类似广播机制的方法来处理。通过对自己发送action,自己接受action,

自己处理action的形式来完成weights上的事件.

	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds)
	{
		this.context = context;
		Intent intent1 = new Intent();
		intent1.setAction(UPDATE_ACTION1);
		/****获取所有weight上的所有空间******/
		RemoteViews remoteViews = new RemoteViews(context.getPackageName(), 
				R.layout.main);
	/**第一个button1 的时间响应  发送的是UPDATE_ACTION1的广播信号 在OnReceive方法中接受鉴别**/
		PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, -1,
				intent1, 0);
		intent1.setAction(UPDATE_ACTION2);
	/**第二个button2的时间响应  发送的是UPDATE_ACTION2的广播信号 在OnReceive方法中接受并鉴别**/
		PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, -1,
				intent1, 0);
		intent1.setAction(UPDATE_ACTION3);
	/**第三个button3的时间响应  发送的是UPDATE_ACTION3的广播信号 在OnReceive方法中接受并鉴别**/
		PendingIntent pendingIntent3 = PendingIntent.getBroadcast(context, -1,
				intent1, 0);
		remoteViews.setOnClickPendingIntent(R.id.button1, pendingIntent1);//取得button1的控件并添加时间 以下类似
		remoteViews.setOnClickPendingIntent(R.id.button2, pendingIntent2);
		remoteViews.setOnClickPendingIntent(R.id.button3, pendingIntent3);
		appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
	}
对广播信息进行分辨 并做对应的处理。
	@Override
	public void onReceive(Context context, Intent intent)
	{
		String action = intent.getAction();//获取action的信息 并进行鉴别 然后执行事件
		if (UPDATE_ACTION1.equals(action))
		{
			System.out.println("button1");
			Toast.makeText(context, "你点击了button1", Toast.LENGTH_LONG).show();
		}
		else if (UPDATE_ACTION2.equals(action))
		{
			System.out.println("button2");
			Toast.makeText(context, "你点击了button2", Toast.LENGTH_LONG).show();
		}
		else if (UPDATE_ACTION3.equals(action))
		{
			System.out.println("button3");
			Toast.makeText(context, "你点击了button3", Toast.LENGTH_LONG).show();

		}
		else
		{
			super.onReceive(context, intent);
		}
	}

同时 你还必须在Androidmainfest.xml上对你的action进行注册

<receiver android:name=".LightChangeActivity" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <intent-filter>
                <action android:name="com.jin.UPDATE_APP_WIDGET1" />
                <action android:name="com.jin.UPDATE_APP_WIDGET2" />
                <action android:name="com.jin.UPDATE_APP_WIDGET3" />
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/light" />
        </receiver>
编写对应的appwidget-provider这里就不说了 




把代码分享出来  http://download.csdn.net/detail/lymabcd/4182363




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5860次
    • 积分:136
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    最新评论