Как я могу установить текст в TextView для String (AndriodStudio)? - PullRequest
0 голосов
/ 03 мая 2020

Я видел много ответов, в которых говорилось, что нужно использовать getResources().getString(R.string.coupon_1), чтобы получить строку из файла . xml и изменить его, но он продолжает показывать значение в strings. xml файл для меня вместо того, чтобы показывать строку в coupon1, coupon2 или coupon3.

Это часть моего метода с некоторыми вещами, которые я пробовал:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_coupon, container, false);

        couponListTextView = view.findViewById(R.id.couponListTextView);
        couponItem1TextView = view.findViewById(R.id.couponItem1TextView);
        couponItem2TextView = view.findViewById(R.id.couponItem2TextView);
        couponItem3TextView = view.findViewById(R.id.couponItem3TextView);

//        coupon1 = "Is";
//        coupon2 = "this";
//        coupon3 = "working?";

        //coupon1 = getResources().getString(R.string.coupon_1);
        coupon1 = "Is";
        couponItem1TextView.setText(coupon1);
        //coupon2 = getResources().getString(R.string.coupon_2);
        coupon2 = "this";
        couponItem2TextView.setText(coupon2);
        //coupon3 = getResources().getString(R.string.coupon_3);
        coupon3 = "working?";
        couponItem3TextView.setText(coupon3);

        CouponRequest couponRequest = new CouponRequest(coupon1, coupon2, coupon3, responseListener, errorListener);
        RequestQueue queue = Volley.newRequestQueue(getActivity().getApplicationContext());
        queue.add(couponRequest);
        return inflater.inflate(R.layout.fragment_coupon, container, false);
    }

Это мои объявления в строках. xml:

<string name="coupon_1">No coupon</string>
<string name="coupon_2">No coupon</string>
<string name="coupon_3">No coupon</string>

Это мои объявления TextView в фрагменте:

<TextView
            android:id="@+id/couponItem1TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="24dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/couponListTextView" />

        <TextView
            android:id="@+id/couponItem2TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="24dp"
            android:text="@string/coupon_2"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/couponItem1TextView" />

        <TextView
            android:id="@+id/couponItem3TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="24dp"
            android:text="@string/coupon_3"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/couponItem2TextView" />

Любая помощь будет принята с благодарностью.

Редактировать: строки, которые я здесь использую, предназначены для тестирования приложения. Мне действительно нужно иметь возможность писать, используя строку, значение которой определяется во время выполнения.

Редактировать: я понял это. Мне просто нужно было вернуть представление вместо создания нового экземпляра View.

1 Ответ

1 голос
/ 03 мая 2020

Строка - это простой ресурс, на который ссылается значение, указанное в атрибуте name. Таким образом, все строки, которые вы используете, должны быть в strings.xml.

<string name="no_coupon">No coupon</string>
<string name="is">Is</string>
<string name="this">this</string>
<string name="working">working?</string>

И, насколько я понимаю, ваши TextView изначально задаются строкой No coupon. Таким образом, в .xml файле TextView должно быть android:text="@string/no_coupon"

А в методе onCreateView вы можете изменить текст, используя метод setText(). Например, couponItem1TextView.setText(R.string.is);

...