Могу ли я вызвать API для данных из виджета и отправить этот объект, чтобы открыть действие при нажатии на виджет (Android)? - PullRequest
0 голосов
/ 02 мая 2018

То, чего я пытаюсь достичь, - это когда пользователь нажимает на виджет, он должен отвести пользователя к деталям той конкретной задачи, которая отображается на виджете. Я попытался с помощью следующего кода, но ничего не происходит при нажатии на виджет. Класс подробностей (MasterList.class) требует данных, которые необходимо извлечь из сети. как мне этого добиться?

  1. Могу ли я вызвать сеть для объекта данных из виджета onUpdate (). Это плохая практика?

  2. Почему нет изменений или ошибок в logcat? Почему приложение не запускается ??

  3. Я сделал какую-то ошибку?

    введите код здесь

    @Override 
     public void onUpdate(Context context,AppWidgetManager appWidgetManager,int[] appWidgetIds)
    {
    super.onUpdate(context, appWidgetManager, appWidgetIds);
    Intent i = new Intent(context, CallNetwork.class);
    i.setAction(ACTION);
    context.startService(i); // starting service to get data from network
    
    
    Intent intent = new Intent(context, MasterListClass.class);
    while(CallNetwork.list.size()==0||CallNetwork.list.equals(null) //waiting for network call to complete
    
    {
    
    }if (CallNetwork.get(0).getName() != null) {
            this.list = CallNetwork.list;// getting data from network
        }
    intent.putExtra(context.getString(R.string.object),list.get(0));
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, 
    intent, PendingIntent.FLAG_UPDATE_CURRENT);
    RemoteViews views = new RemoteViews(context.getPackageName(), 
     R.layout.recipe_widget);
    views.setOnClickPendingIntent(R.id.widget_layout, pendingIntent);
    appWidgetManager.updateAppWidget(appWidgetIds[0], views);}
    

1 Ответ

0 голосов
/ 02 мая 2018

Этот код можно использовать для запуска onUpdate () в виджете после того, как служба загрузит данные из сети:

Intent intent = new Intent(this, MyAppWidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
// Use an array and EXTRA_APPWIDGET_IDS instead of 
AppWidgetManager.EXTRA_APPWIDGET_ID,
// since it seems the onUpdate() is only fired on that:
int[] ids = AppWidgetManager.getInstance(getApplication())
.getAppWidgetI‌​ds(new ComponentName(getApplication(), 
MyAppWidgetProvider.class));
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
sendBroadcast(intent);

Программно обновить виджет из активности / службы / получателя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...