如何在Android中获取和设置字符串资源值

3
我声明了一个字符串:String
<string name="Please">Please Select</string>

res/values/Strings.xml文件中。现在我想要访问这个String值,但是我能够获取的只有id而不是value,例如:

 int i = findViewById(R.string.Please);

但我想要的只是字符串Please的值。

谢谢你们所有人的回答,但我的问题有点大。

我想做的就是用应用名称显示日期。

从你们所有人的答案中,我可以得到应用程序名称字符串,但我是否可以将此应用程序名称设置为当前日期?

<string name="app_name">My app</string>

并且我要以这种方式设置我的电脑。
My app(in Left alignment)             Date (in right aligment)

同时,在第一个活动开始时,我想设置app_name而不是在每个活动中都设置;

我认为这可能有效,让我试一试。

setResource().setString(R.string.Please);

抱歉,没有setResource()方法。

1
如果以下答案对您有所帮助,您可以接受其中一个答案。 - dhaval
2
让我得到我想要的答案,我会去做的,这不是问题。 - Trikaldarshiii
2
可以一直进行,直到ID不是像值那样的东西。 - Michael
5个回答

12

试着这样做

String temp = getResources().getString(R.string.Please);

10
您不能设置一个字符串,它是静态的,无法在运行时更改。您想要做的是像这样:
        Calendar cal = Calendar.getInstance();
        String date = cal.get(Calendar.DAY_OF_MONTH) + "/" + cal.get(Calendar.MONTH) + "/" + cal.get(Calendar.YEAR);
        setTitle(date);

您想将标题设置为日期,是吧?

要有两个标题比较困难,首先需要一个布局,称之为custom_title_1。

这是该布局的XML代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/screen"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView android:id="@+id/left_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="@string/custom_title_left" />
    <TextView android:id="@+id/right_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="@string/custom_title_right" />
</RelativeLayout>

在调用UI之前,您需要在代码中调用此函数:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

接着设置您的内容视图。

接下来调用此函数,它将设置标题:

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1);

现在您可以找到这两个TextView并设置文本:

TextView leftText = (TextView) findViewById(R.id.left_text);
TextView rightText = (TextView) findViewById(R.id.right_text);

Calendar cal = Calendar.getInstance();
String date = cal.get(Calendar.DAY_OF_MONTH) + "/" + cal.get(Calendar.MONTH) + "/" + cal.get(Calendar.YEAR);
String app_name = getString(R.string.app_name);
leftText.setText(app_name);
rightText.setText(date);

你理解错了,我是这样做的,但实际上我想设置存储在res/strings/下的strings.xml中的字符串。在那里,你可以找到名为"app_name"的字符串,我想从我的代码中设置它。不要着急,仔细阅读整个问题。 - Trikaldarshiii
1
你看到剩下的部分了吗?我不认为我有任何错误? - FabianCook
你不能直接在strings.xml文件中更改字符串,最好的做法是这样,每次应用程序运行时,需要半毫秒来加载它,同时你可以获得对齐方式。如果您需要其他内容,请在此处发表评论以进一步解释。这是我理解的您想要的内容。 - FabianCook
顺便说一下,我正在编辑它,因为我正在阅读我已经有的内容,并在进行保存。 - FabianCook
我想在第一个活动开始时设置app_name,而不是在每个活动中都设置。请确保阅读此行。 - Trikaldarshiii
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/9947/discussion-between-photon-and-smartlemon - Trikaldarshiii

5

尝试这个。

String value = getResources().getString(R.string.Please);

2
 String str = getResources().getString(R.string.Please);

1

字符串资源不是视图。要使用字符串资源,您需要执行以下操作

@string/Please

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接