Я пытаюсь сделать простой виджет, который отображает тексты, взятые из базы данных. Я создал базу данных + кнопку, которая перенаправляет на MainActitivy при нажатии. Тем не менее, я не могу установить текст на кнопке, используя мой метод.
Это метод из моего класса DataBase для получения первых «Имени» и «Фамилии»:
public String getData(int i) {
StringBuffer buffer = new StringBuffer();
db = this.getReadableDatabase();
Cursor res = db.rawQuery("SELECT * FROM " + TABLE_NAME + " WHERE " + COLUMN_ID + " = "+ i, null);
while (res.moveToNext()) {
String firstname = res.getString(1);
String lastname = res.getString(2);
buffer.append(firstname);
buffer.append(" ");
buffer.append(lastname);
}
return buffer.toString();
}
Возвращает строку, и я позже использую ее для установки текста на кнопке с помощью метода setCharSequence ():
public class WidgetProvider extends AppWidgetProvider {
DatabaseHandler myDb;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
String result = myDb.getData(1);
for (int appWidgetId : appWidgetIds) {
Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setOnClickPendingIntent(R.id.button, pendingIntent);
views.setCharSequence(R.id.button,"setText",result);
appWidgetManager.updateAppWidget(appWidgetId,views);
}
}
}
Однако я не могу вызвать какой-либо метод, который имеет дело с классом DatabaseHandler в классе WidgetProvider. Я даже пытался извлечь Firstname + Lastname из MainActivity, затем создал экземпляр класса MainActivity в WidgetProvider, но в нем все еще есть ошибки. Существуют ли другие способы извлечения данных из базы данных и отображения их на кнопке виджета? Большое спасибо!