Как изменить текст TextView, нажав кнопку в виджете Android - PullRequest
0 голосов
/ 30 мая 2018

Вот мой res / xml / widget.xml

  <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="+" />

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="5" />

        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="-" />

Вот мой файл AppWidgetProvider:

 @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) {
            Intent intent = new Intent(context,MainActivity.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,0);
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
            views.setOnClickPendingIntent(R.id.button,pendingIntent);
            appWidgetManager.updateAppWidget(appWidgetId,views);

//            views.setTextViewText(R.id.textView,"2");
            updateAppWidget(context, appWidgetManager, appWidgetId);


        }
    }

Затем нажмите кнопку (+), текстовое представление добавит один \ textview =6.затем нажмите кнопку (-), textview = 4 Пожалуйста, помогите мне, мне нужно какое-либо решение.

Ответы [ 2 ]

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

Вы не можете напрямую разыменовывать представления от AppWidgetProvider, для этого вы должны использовать Remote Views.Пример: -

private static final String MyOnClick = "Button OnClick";

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.you_widget_layout);
views.setOnClickPendingIntent(R.id.your_button, MyOnClick);

Get You Button Нажмите Слушатель, как это: -

@Override
public void onReceive(Context context, Intent intent) 
{
   if (intent.getAction().equals(MyOnClick)) //Update Here <- <-
   {
     views.setTextViewText(R.id.your_text_view, "text here");
   }
}
0 голосов
/ 30 мая 2018
  1. Реализация View.OnClickListener в вашей деятельности / фрагмент.
  2. Создание статического целого числа.private static int count;

  3. Добавьте следующую логику в свою деятельность / фрагмент:

        Button buttonPlus = findViewById(R.id.button);
        Button buttonMinus = findViewById(R.id.button3);
        textView = findViewById(R.id.textView);
    
        if (textView.getText().toString().isEmpty()) {
            count = 0;
        } else {
            count = Integer.valueOf(textView.getText().toString());
        }
    
        buttonPlus.setOnClickListener(this);
        buttonMinus.setOnClickListener(this);
    
  4. В реализованном onClick добавьте следующее:

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button:
                count++;
                updateTextView(count);
                break;
            case R.id.button3:
                count--;
                updateTextView(count);
                break;
        }
    }
    
  5. Наконец, создайте метод, который обновляет ваше текстовое представление:

    private void updateTextView(int count) {
        textView.setText(String.valueOf(count));
    }
    
...