【问题标题】:Android App: How can I print out a String with java code?Android 应用程序:如何使用 java 代码打印出字符串?
【发布时间】:2018-02-05 15:48:44
【问题描述】:

我对 Android 编程很陌生!

我想做一些非常简单的事情:

if(i < 1) 
    System.out.println("Ja");
 else
    System.out.println("Nein");

我的第一个想法是如何在 xml 中使用带有字符串资源的 TextView:

<TextView
android:id="@+id/mytextview"
android:text="@string/Entscheidung"
android:layout_width="match_parent"
android:layout_height="match_parent" />

然后通过 Java 代码访问该资源:

R.string.Entscheidung = "Ja";

但它不起作用:Error:(13, 17) error: cannot assign a value to final variable Entscheidung

还有其他方法可以做到这一点吗?

谢谢!

【问题讨论】:

  • myTextView.setText(i &lt; 1 ? "Ja" : "Nein");
  • “它不起作用”——如果您不提供 minimal reproducible example,我们无法帮助您解决这个问题,显示您尝试过的操作并详细解释出了什么问题。
  • 考虑到R是在编译时创建的,它只包含常量,你不能从你的代码中修改这些值。
  • 我更喜欢学习安卓教程
  • 为什么我的问题被否决了?

标签: java android if-statement output


【解决方案1】:

首先我想澄清一下字符串资源的概念以及它们是如何使用的。对于常量字符串值(在您的情况下为“Ja”和“Nein”),您可以在名为strings.xml 的文件中定义这些值,该文件位于res/values 文件夹中。举个例子:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="antwort_ja">Ja</string>
    <string name="antwort_nein">Nein</string>
</resources>

这些值在编译时最终确定,因此可以在整个应用程序中用作常量。对于 XML 布局文件,是的,您可以使用 @string/ 前缀引用这些字符串资源。但是,在您的 Java 代码中,您只能使用 getString() 方法使用 R.string 前缀来引用这些值。因为这些R.string 值是final,所以它们不能在运行时更改,因此您会得到错误。在您的情况下,您的代码将是:

// I'm assuming you have this declared in onCreate()
TextView myTextView = (TextView)findViewById(R.id.mytextview); 

if (i < 1) {
    myTextView.setText(getString(R.string.antwort_ja));
} else {
    myTextView.setText(getString(R.string.antwort_nein));
}

这也假设您是从 Activity 中调用它的。如果没有,您可能需要从 Context 的实例中调用它,例如context.getString(R.string.antwort_ja);

【讨论】:

  • 这行得通!并感谢您对字符串资源的解释! :D
【解决方案2】:

strings.xml文件:

<string name="firststring">Hello World</string>
<string name="secondtring">Welcome</string>

活动或片段:

textView.setText(i < 1 ? getResources().getString(R.string.firststring) : getResources().getString(R.string.secondtring));

【讨论】:

  • 好的,但我不想“获取”值,我想“设置”值.. 我该怎么做?
  • 否则你可以这样做: if(i
  • 你已经从 res 文件夹中获取了值,无论如何你没有设置它
【解决方案3】:

首先声明你的 TextView 变量

private TextView mTextView;

在创建时

mTextView  = (TextView) findViewById(R.id.mytextview);

之后你就可以使用它了

if(i < 1) 
    System.out.println("Ja");
 else
    System.out.println("Nein");

可以使用您的 TextView 来完成,如下所示

if(i < 1) 
   mTextView.setText(getString(R.String.myJaText);
 else
    mTextView.setText(getString(R.String.myNeinText);

在 Strings.xml 中,您可以在文本字段中编写要使用的文本。

可以在Res - Values中找到Strings.xml:

<string name="myJaText">Ja</string>
<string name="myNeinText">Nein</string>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2019-03-01
    相关资源
    最近更新 更多