我挽救了我以前的解释,好的,我会再试一次
我有一个按钮和一个文本字段,您在文本字段中输入文本,按下按钮,这意味着将您带到另一个页面并显示输入的文本,buuut
好的,所以,我希望左边带下划线的消息(带有瘦箭头指向它的那个)成为在android中调用的变量:text =“@ string / message”但是,android:text =“ @ string / message“而是从strings.xml中调用它<string name="message">words</string>
所以无论我在文本字段中输入什么,第二页总是说”单词“
我真的希望Dx
有道理答案 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);
}