Я узнал сегодня, как разработать AppWidget, и мой вопрос в том, как я могу запускать методы в виджетах приложения? пример: У меня есть кнопка в xml, и я хочу, чтобы кнопка вычислила что-то. - часть создания виджета отлично работает, и теперь я хочу добавить некоторые методы к кнопке. Как его работает в «Виджетах приложений»?Как я могу запускать методы в AppWidget?
вот мой код:
public class WorkClockWidget extends AppWidgetProvider {
MySharedPreferences shared;
RemoteViews views;
private Context context;
private String text;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
for (int i = 0; i < appWidgetIds.length; i++) {
views = new RemoteViews(context.getPackageName(), R.layout.clock_widget);
/// i have button in the "R.layout.clock_widget" .
//what i need to do if i want the button run the "someText()" method?
appWidgetManager.updateAppWidget(appWidgetIds[i], views);
}
}
//The method i want to run when i press on the button.
public String someText(){
System.out.println("Works!!!");
return "Test if this method works";
}
}
Еще один вопрос: Если я хочу, чтобы мой виджет добавить данные в свою базу данных, я должен использовать ContentProvider?
Спасибо, что это работает, но если я хочу больше кнопки, мне нужно сделать это каждый метод и кнопку? –
Для получения дополнительных кнопок вы можете просто создать новые строки действий Intent, такие как «com.myapp.button1», «com.myapp.button2» и т. Д. Для каждой кнопки создайте новый Intent, новый PendingIntent, другой тег действия в манифест и предложение else-if в onReceive. – Bruce
О, и я только что заметил ваш вопрос о базе данных и ContentProvider. Вы можете добавить свой виджет в базу данных, как и любой другой код. Вы можете использовать SQLiteDatabase напрямую или обернуть доступ к базе данных в ContentProvider. Но детали того, как это сделать, будут отдельным вопросом - тот факт, что вы делаете это изнутри виджета, не имеет значения. – Bruce