Проблема обновления индикатора выполнения виджета на главном экране из файла - PullRequest
0 голосов
/ 03 марта 2020

У меня есть виджет домашнего экрана с текстовым обзором, который отображает дату, и индикатор выполнения, который отображает значение c. Оба значения для представлений считываются из файла каталога каждый раз, когда виджет обновляется. Текстовое представление обновляется без каких-либо проблем, однако индикатор выполнения просто не обновляется. Я в недоумении, почему это может быть. Полное раскрытие: я абсолютный новичок, когда дело доходит до android. Кроме того, не обращая внимания на избыточные операторы if и progress = 0, я добавил это как способ проверки правильности чтения файла.

Java код:

   public class WidgetProvider extends AppWidgetProvider {

        private void updateProgress(int progress){
            //ProgressBar progressBar = (ProgressBar) findViewById()
        }

        private StringBuilder getText(InputStream inputStream) {
            StringBuilder stringBuilder = new StringBuilder();

            try {
                if (inputStream != null) {
                    InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                    String newLine = null;
                    while ((newLine = bufferedReader.readLine()) != null) {
                       stringBuilder.append(newLine);
                    }
                    inputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }return stringBuilder;
        }


        @Override
        public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                             int[] appWidgetIds) {
            super.onUpdate(context,appWidgetManager,appWidgetIds);

            ComponentName thisWidget = new ComponentName(context,
                    WidgetProvider.class);
            int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
            for (int widgetId : allWidgetIds) {

                RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
                        R.layout.widget_layout);

                //set text for label
                CharSequence widgetText = context.getString(R.string.appwidget_text);

                RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
                views.setTextViewText(R.id.id_label, widgetText);

                /*Set countdown timer.
                new CountDownTimer(50000,1000) {
                    @Override
                    public void onTick(long millisUntilFinished) {
                    }
                    @Override
                    public void onFinish() {

                    }
                }.start();*/

                int progress = 0;
                String deadline = "";
                InputStream inputStream = context.getResources().openRawResource(R.raw.deadline);
                String str = getText(inputStream).toString();


                StringTokenizer stringTokenizer = new StringTokenizer(str, ",");
                while (stringTokenizer.hasMoreTokens()) {
                    deadline = stringTokenizer.nextToken();
                    progress = Integer.parseInt(stringTokenizer.nextToken());
                }


                //set deadline text
                remoteViews.setTextViewText(R.id.textView_deadline, deadline);
                //Test statement
                if (progress == 0) {
                    views.setProgressBar(R.id.progressBar0,100,80,false);
                    views.setTextViewText(R.id.textView_progress, deadline);
                    System.out.println(deadline);
                    System.out.println(progress);
                    //sets progress bar value
                    switch (progress) {
                        case 0:
                            views.setProgressBar(R.id.progressBar0,100,0,false);
                            views.setTextViewText(R.id.textView_progress, "0%");
                            break;
                        case 10:
                            views.setProgressBar(R.id.progressBar0, 100, 10, false);
                            views.setTextViewText(R.id.textView_progress, "10%");
                            break;
                        case 20:
                            views.setProgressBar(R.id.progressBar0, 100, 20, false);
                            views.setTextViewText(R.id.textView_progress, "20%");
                            break;
                        case 30:
                            views.setProgressBar(R.id.progressBar0, 100, 30, false);
                            views.setTextViewText(R.id.textView_progress, "30%");
                            break;
                        case 40:
                            views.setProgressBar(R.id.progressBar0, 100, 40, false);
                            views.setTextViewText(R.id.textView_progress, "40%");
                            break;
                        case 50:
                            views.setProgressBar(R.id.progressBar0, 100, 50, false);
                            views.setTextViewText(R.id.textView_progress, "50%");
                            break;
                        case 60:
                            views.setProgressBar(R.id.progressBar0, 100, 60, false);
                            views.setTextViewText(R.id.textView_progress, "60%");
                            break;
                        case 70:
                            views.setProgressBar(R.id.progressBar0, 100, 70, false);
                            views.setTextViewText(R.id.textView_progress, "70%");
                            break;
                        case 80:
                            views.setProgressBar(R.id.progressBar0, 100, 80, false);
                            views.setTextViewText(R.id.textView_progress, "80%");
                            break;
                        case 90:
                            views.setProgressBar(R.id.progressBar0, 100, 90, false);
                            views.setTextViewText(R.id.textView_progress, "90%");
                            break;
                        case 100:
                            views.setProgressBar(R.id.progressBar0, 100, 100, false);
                            views.setTextViewText(R.id.textView_progress, "100%");
                            break;
                        default:
                            views.setProgressBar(R.id.progressBar0, 100, -1, false);
                            views.setTextViewText(R.id.textView_progress, "null");
                    } 
                }else
                    System.out.println("ERROR.");



                    // Register an onClickListener
                Intent intent = new Intent(context, MainActivity.class);

                PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,0);
                remoteViews.setOnClickPendingIntent(R.id.textView_deadline,pendingIntent);
                appWidgetManager.updateAppWidget(widgetId, remoteViews);

            }
        }
    }

Вот xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    style="@style/widget_views"
    android:layout_width="wrap_content"
    android:layout_height="200dp"
    android:background="@drawable/widget_background"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/id_label"
        style="@style/widget_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_alignParentTop="true"
        android:layout_marginLeft="8dp"
        android:text="Dysgu"
        android:textAlignment="center"
        android:textColor="@android:color/white"
        android:textSize="30sp" />

    <ImageView
        android:id="@+id/imageView_logo"
        android:layout_width="70dp"
        android:layout_height="60dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="false"
        android:layout_marginEnd="4dp"
        android:layout_marginRight="4dp"
        tools:srcCompat="@drawable/logo_base" />

    <TextView
        android:id="@+id/label_progress"
        android:layout_width="60dp"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="65dp"
        android:text="Your Progress "
        android:textColor="@android:color/background_light"
        android:textStyle="bold"
        app:layout_constraintTop_toBottomOf="@+id/id_label" />

    <FrameLayout
        android:id="@+id/frameLayout"
        android:layout_width="291dp"
        android:layout_height="31dp"
        android:layout_above="@id/textView_deadline"
        android:layout_alignParentTop="false"
        android:layout_alignParentRight="false"
        android:layout_marginStart="13dp"
        android:layout_marginLeft="13dp"
        android:layout_marginTop="60dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="16dp"
        android:layout_toEndOf="@+id/label_progress"
        android:layout_toRightOf="@+id/label_progress">

        <ProgressBar
            android:id="@+id/progressBar0"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:background="#7EFFFFFF"
            android:clickable="false"
            android:max="100" />

        <TextView
            android:id="@+id/textView_progress"
            android:layout_width="293dp"
            android:layout_height="33dp"

            android:gravity="center"
            android:textColor="@android:color/background_light"
            android:textStyle="bold" />
    </FrameLayout>

    <TextView
        android:id="@+id/label_deadline"
        android:layout_width="60dp"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="28dp"
        android:layout_marginBottom="26dp"
        android:text="Your Deadline "
        android:textColor="@android:color/background_light"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/textView_deadline"
        android:layout_width="wrap_content"
        android:layout_height="31dp"
        android:layout_alignBottom="@id/label_deadline"
        android:layout_alignParentRight="true"
        android:layout_marginStart="14dp"
        android:layout_marginLeft="14dp"
        android:layout_marginTop="8dp"
        android:layout_marginRight="7dp"
        android:layout_marginBottom="3dp"
        android:layout_toEndOf="@+id/label_deadline"
        android:layout_toRightOf="@+id/label_deadline"
        android:background="#40FFFCFC"
        android:textColor="@android:color/background_light"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="@id/label_deadline"
        app:layout_constraintStart_toEndOf="@+id/label_deadline"
        app:layout_constraintTop_toBottomOf="@+id/frameLayout" />

</RelativeLayout>

Опять же, если я упустил что-то нелепо очевидное, прошу прощения за мое невежество , Заранее спасибо.

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