【问题标题】:How can I set the text in a TextView to a String (AndriodStudio)?如何将 TextView 中的文本设置为字符串(Android Studio)?
【发布时间】:2020-05-03 13:06:59
【问题描述】:

我看到很多回复说要使用getResources().getString(R.string.coupon_1)strings.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);
    }

这些是我在 strings.xml 中的声明:

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

这些是我在 fragment_coupon 中的 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" />

任何帮助将不胜感激。

编辑:我在这里使用的字符串是为了测试应用程序。我真的需要能够使用其值在运行时确定的字符串进行编写。

编辑:我想通了。我只需要返回视图而不是创建一个新的视图实例。

【问题讨论】:

    标签: java xml android-studio android-layout


    【解决方案1】:

    字符串是使用 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);

    【讨论】:

    • 如果我能解决您的问题,请将我的回答标记为解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 2018-09-14
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多