如何在Android应用中显示字符串?

时间:2013-12-18 01:00:24

标签: java android

我挽救了我以前的解释,好的,我会再试一次

我有一个按钮和一个文本字段,您在文本字段中输入文本,按下按钮,这意味着将您带到另一个页面并显示输入的文本,buuut

enter image description here

好的,所以,我希望左边带下划线的消息(带有瘦箭头指向它的那个)成为在android中调用的变量:text =“@ string / message”但是,android:text =“ @ string / message“而是从strings.xml中调用它<string name="message">words</string>所以无论我在文本字段中输入什么,第二页总是说”单词“

我真的希望Dx

有道理

5 个答案:

答案 0 :(得分:2)

这是一个令人困惑的问题。但是,如果您希望字符串变量是xml文件中的字符串,则应执行以下操作:

String message = this.getResources().getString(R.string.entered_message);

然而,你在这里做事的方式似乎很奇怪。但是,如果不确切地知道你要做什么,我无法确定。

既然你已经改变了你的问题,我想我知道你想做什么,所以我编辑了我的答案。正如约翰在帖子中提到的,你需要做的第一件事就是在调用setContentView之后直接致电super.onCreate。这意味着您将能够从xml布局访问TextView并将其文本更改为已传递到活动中的文本。我将在下面举例说明。

首先,您需要在名为activity_display_message.xml的布局文件中为文本视图添加一个id:

<TextView
    android:id="@+id/my_text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/message"/>

然后,如果我已理解您要正确执行的操作,则onCreate方法包含以下内容:

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

TextView textView = (TextView)findViewById(R.id.my_text_view);
textView.setTextSize(40);
textView.setText(message);

答案 1 :(得分:2)

String entered_message = getRessources().getString(R.string.entered_message);

但是你的String是空的。将其更改为:

<string name="entered_message">Here some text</string>

此外,您不会将TextView添加到布局中。你有两个选择:

(1):通过例如:

将视图添加到当前布局
LinearLayout layout = (LinearLayout) findViewById(R.id.content)
layout.addView(textView);

(在你的主xml文件中,布局应该有:android:id =“@ + id / content”)。

(2):将TextView直接添加到XML文件中,并在xml中分配字符串(更好的方法):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:id="@+id/content">
  <TextView android:id="@+id/myTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/entered_message"
  />
</LinearLayout>

答案 2 :(得分:1)

我很困惑 你的问题在哪里但是如果你希望你的TextView显示消息,你会遇到一些问题。这一行

TextView textView = new TextView(this);

将创建一个新的TextView,而不是引用xml中的那个。并且它不会显示,因为您尚未将其添加到contentView。因此,当您致电setContentView(R.layout.activity_display_message);时,将会显示activity_display_message中的内容。如果您要访问View,则需要在xml文件中为其id添加findViewById()。所以给它一个id

<TextView
android:id="@+id/tv1"   // give it an id here
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/entered_message" />

然后在调用setContentView(...)

后访问
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      Intent intent = getIntent();
      String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
      setContentView(R.layout.activity_display_message);
      TextView tv = (TextView) findViewById(R.id.tv1);  // reference it here with the id you gave it in the xml

}

现在您已引用TextView,如果需要,您可以致电setText()setTextSize()等。

我不确定你想要什么String所以如果没有更好的解释就很难提供更多的帮助。但请注意

String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

会将message变量分配给来自调用Intent的{​​{1}}中传递的内容。

答案 3 :(得分:0)

首先你需要创建一个布局,看起来你已经做过了:

<强> layout.xml

<TextView
    android:id="@+id/root"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

现在您创建字符串值:

<强> string.xml

<string name="entered_message">Hello everyone!!</string>

现在您必须在活动中获取TextView:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);
    //^^ do this first!!

    //Intent intent = getIntent();
    //String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    //^^ dont do this

    // do this:
    String message = this.getString(R.string.entered_message);
    TextView textView = (TextView)this.findViewById(R.id.root);
    textView.setTextSize(40);
    textView.setText(message);
}

然后你去!这一切都应该在屏幕上显示文字。

答案 4 :(得分:0)

<string name="entered_message">Hello everyone!!</string>

现在您必须在活动中获取TextView:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);
    //^^ do this first!!

    // do this:

    TextView textView = (TextView)this.findViewById(R.id.root);

    textView.setText(R.string.entered_message);
}