بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

کنترل button در ویجت

مدیریت گفتگو
میلاد 10 سال پیش
آخرین تغییر: 10 سال پیش

دوستان من برای ویجتم یه button گذاشتم که می خوام وقتی کاربر روش کلیک میکنه یه سری کارهایی انجام بده. مثلا پیغام toast چاپ کنه یا...

دوستان لطفا اگه کسی میدونه کمک کنه. خیلی مهمه

نظرات

MeY3am 10 سال پیش
کدشو بزار که بشه راهنمایی کرد !
میلاد 10 سال پیش
فرقی نداره واسه چه کدی. مثلا توی صفحه ی اصلی، رویداد یک button را داخل بلاک setOnClickListener می نویسیم. ولی گویا از این تابع نمیشه واسه ویجت ها استفاده کرد. اگه روشش رو میدونید لطفا کمک کنید
Spirit 10 سال پیش
این لینک رو خوب مطالعه کنید، بعد اگر نتونستید سعی میکنم بیشتر راهنمایی کنم.
HoCoder 10 سال پیش
برای این کار باید از BroadcastReceiver استفاده کنی
میلاد 10 سال پیش
@Nosrati ممنون از راهنماییت. ولی توی این لینک که در مورد کار با button چیزی ننوشته. میشه بیشتر راهنمایی کنید؟

پاسخ‌ها 1

Spirit 10 سال پیش

انصافا نخوندید، کافیه setOnClickPendingIntent رو توی صفحه جستجو کنید. اینم یه مثال:

Manifest

<receiver android:name=".ButtonWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="com.app.widget.TOAST" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/button_widget_info" />
</receiver>

WidgetClass

public class ButtonWidget extends AppWidgetProvider {

static final String TOAST_ACTION = "com.app.widget.TOAST";
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
Intent i = new Intent(TOAST_ACTION);
PendingIntent pi = PendingIntent.getBroadcast(context,0,i,0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.button_widget);
views.setOnClickPendingIntent(R.id.button,pi);
appWidgetManager.updateAppWidget(appWidgetId, views);
}

@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if (TOAST_ACTION.equals(intent.getAction())) {
Toast.makeText(context, "Button Clicked", Toast.LENGTH_SHORT).show();
}
}

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
for (int appWidgetId : appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetId);
}
}
}

نظرات

میلاد 10 سال پیش
ممنون آقا. دمت گرم

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .