PDA

View Full Version : اجرای یک متد در ودیجت



abbasalim
چهارشنبه 13 آذر 1392, 20:15 عصر
بنام خدا
سلام
اگه من بخوام یک متد رو داخل ویجت صدا بزنم باید چیکارکنم/ ؟ (متد افزودن به علاقه مندی ها درون دیتابیس):متفکر:

rubiks.kde
چهارشنبه 13 آذر 1392, 22:44 عصر
بنام خدا
سلام
اگه من بخوام یک متد رو داخل ویجت صدا بزنم باید چیکارکنم/ ؟ (متد افزودن به علاقه مندی ها درون دیتابیس):متفکر:

یعنی چی؟
مشکلی نداره شما چون context رو دارید داخل ویدجت و ویدجت هم جز برنامه شما هست پس به راحتی میتونید از پایگاه داده اون هم استفاده کنید.

abbasalim
پنج شنبه 14 آذر 1392, 09:01 صبح
اره میدونم من دیتابیس رو باز میکنم اطلاعات رو ازش میخونم ولی نمیدونم چجوری بگم وقتی رو اون دکمه کلیک شد یه متد خاص رو فراخوانی کن (وقتی کلیک شد !)

rubiks.kde
پنج شنبه 14 آذر 1392, 11:06 صبح
این کار توی ویدجت مثل اکتیویتی صورت نمیگیره شما باید با PendingIntent این کار رو انجام بدید.
اگه دقت کرده باشید توی AndroidManifest.xml برای ویدجت چنتا اکشن وجود داره شما هم یک اکشن برای کلیک button بنویسید مثلا :
<action android:name="MY_PACKAGE_NAME.WIDGET_BUTTON" />
متغییر WIDGET_BUTTON رو هم داخل کلاس ویدجت معرفی کنید(برای راحتی و خواناشدن کد)
public static String WIDGET_BUTTON = "MY_PACKAGE_NAME.WIDGET_BUTTON";
حالا توی تابع onUpdate() کدهایی شبیه به این بنویسید و دادهای مورد نیاز در صورت وجود هم همراهش بفرستید:
Intent intent = new Intent(WIDGET_BUTTON);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.MY_BUTTON_ID, pendingIntent );
حالا تابع onRecieve() رو برای ویدجت بنویسید و داخل اون این کد رو قرار بدید :
if (WIDGET_BUTTON.equals(intent.getAction())) {
//your code here

}

abbasalim
پنج شنبه 14 آذر 1392, 11:51 صبح
فوق العاده ممنون :قلب: یه مشکل دیگه دارم با ویجت که اگه حل نشد بعدا می پرسم