如何从资源字符串以编程方式设置值?

时间:2016-11-24 11:10:58

标签: java android

让我们说在strings.xml中有这样的东西:

TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello);

现在我想使用此字符串为TextView设置一个值。我应该在java类中这样做:

android:text="@string/hello"

或在xml文件中如下?

<body ng-app="starter">
    <ion-nav-view></ion-nav-view>
</body>

哪种方法更好?或者当第一种方式和第二种方式使用时更好?

5 个答案:

答案 0 :(得分:1)

你不应该这样做。有一种相对较新的方法,称为数据绑定(2015年是演示),现在这个库得到了Google的正式支持。它是MVVM模式的一种表现形式,您应该使用它,因为它可以简化您的代码并使其在长期内更易于维护。见https://developer.android.com/topic/libraries/data-binding/index.html。简而言之,您可以使用字段和访问者创建Java类,并将其字段设置为xml属性。通过这样做,AndroidStudio将为您生成所有.findViewbyId()样板。你只需创建模型并将其设置为特定的绑定。

答案 1 :(得分:0)

关于表现,它没有任何区别。我个人更喜欢用XML来做,因为它不会使你的活动代码混乱。

答案 2 :(得分:0)

两种方法都是正确的。如果你想将你的变量国际化,那么时间(改变语言)都会起作用。在引用内存或速度时动态更改是正确的(意味着使用getResource()或R.string.hello)。

答案 3 :(得分:0)

首先你应该在xml中设置它。(或者把它留空。)但如果你想在其他事情发生时改变它(例如当用户点击按钮或其他任何东西时)。你应该在java中设置它。

答案 4 :(得分:0)

当您希望修改textview和final时,通常会使用第一种方法。 建议使用第二种方法,因为textview的值可能会在app的操作过程中发生变化。最初在第二种方法中,textview显示一个值,显示其目的或类型。例如,第二个可用于显示后台任务的进度。