如何通过按Android小部件中的按钮更改TextView的文本

时间:2018-05-30 17:32:34

标签: android widget android-pendingintent

这是我的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添加一个\ textview = 6。按下按钮( - )然后,textview = 4 请帮助我,我需要任何解决方案。

2 个答案:

答案 0 :(得分:0)

  1. 在您的Activity / Fragment中实现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. 最后创建一个更新textview的方法:

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

答案 1 :(得分:0)

您无法直接取消引用 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");
   }
}