0
Cần giúp đỡ làm sự kiện on click button trên widget
Cho em hỏi có ai làm widget cho android không giúp em làm cái sự kiện on click button trên widget với
Thêm một bình luận
1 CÂU TRẢ LỜI
+1
@Lynk Có lẽ bạn đang gặp vấn đề về việc xác định xem bạn nhấn vào button
nào trên widget
.
Khi tạo 1 PendingEvent
, bạn chỉ cần setAction
cho nó và trong hàm onReceive()
bạn kiểm tra xem action
đó là action
nào rồi xử lý tiếp.
public class MyWidgetProvider extends AppWidgetProvider {
private static final String MyOnClick1 = "myOnClickTag1";
private static final String MyOnClick2 = "myOnClickTag2";
private static final String MyOnClick3 = "myOnClickTag3";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Log.d(TAG, "onUpdate()");
for (int widgetId : appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName() ,R.layout.widget_layout);
remoteViews.setOnClickPendingIntent(R.id.widget_button_stay, getPendingSelfIntent(context, MyOnClick1));
remoteViews.setOnClickPendingIntent(R.id.widget_button_away, getPendingSelfIntent(context, MyOnClick2));
remoteViews.setOnClickPendingIntent(R.id.widget_button_diss, getPendingSelfIntent(context, MyOnClick3));
remoteViews.setTextViewText(R.id.widget_textview, "viblo abc");
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
}
protected PendingIntent getPendingSelfIntent(Context context, String action) {
Intent intent = new Intent(context, getClass());
intent.setAction(action);
return PendingIntent.getBroadcast(context, 0, intent, 0);
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(MyOnClick1)) {
// your onClick action is here
Toast.makeText(context, "Button1", Toast.LENGTH_SHORT).show();
Log.w("Widget", "Clicked button1");
} else if (action.equals(MyOnClick2)) {
Toast.makeText(context, "Button2", Toast.LENGTH_SHORT).show();
Log.w("Widget", "Clicked button2");
} else if (action.equals(MyOnClick3)) {
Toast.makeText(context, "Button3", Toast.LENGTH_SHORT).show();
Log.w("Widget", "Clicked button3");
}
}
}
Anh ơi ví dụ như em muốn đổi image của button thì như thế nào
@Lynk Bạn thử cách này xem.
Trong onReceive()
:
//.....
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
// Tham số thứ nhất là id của phần tử muốn đổi image
// Tham số thứ 2 là image/drawable muốn sử dụng
remoteViews.setImageViewResource(R.id.widget_button_away, R.drawable.border_radius_10);
@DoanhPV anh ơi cái RemoteViews đó nếu gọi ở onReceice thì trên onUpdate có cần để không