我正在编写我的第一个应用程序,我仍在学习Java
和XML
。 android教程设置了两个活动,一个接收用户输入,另一个活动只是获取输入并显示在另一个屏幕上。第二个活动看起来像这样:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Get the message from Intent
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
//Create the text view
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
setContentView(textView);
}
我的问题是:如何在xml中使用'message'而不是这个java文档?我想避免使用setContentView(textView),因为我想在活动屏幕上添加更多内容。您建议采用哪些解决方案?
答案 0 :(得分:3)
setContentView()
是必需的。您有两个选项可以创建发送到setContentView()
的主视图:
您可以使用Java代码创建布局。
您可以在XML文件中创建布局。
通常第二个是静态UI的首选,第一个是在UI更动态时使用。
我建议您熟悉the Official Android Documentation。特别是,您应该查看UI Overview以了解Android UI框架。
您可能还有兴趣使用string resource存储用于“额外内容”的密钥,这些密钥存储在发送到Intent
方法的onCreate()
中。
答案 1 :(得分:2)
我不确定我是否理解,但是如果我这样做,请将TextView
放在layout
的xml文件中,并在setContentView)
中使用它。像
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Your message"/> // it is better to use strings.xml instead of hard-coded strings
</LinearLayout>
说这叫做myLayout.xml
public class MyClass extends Activity{
TextView tv1;
rotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout);
tv1 = (TextView) findViewById(R.id.tv1);
}
您无法在运行时添加到xml文件,但现在可以将此TextView
中的文本设置为您想要的任何内容
public class MyClass extends Activity{
TextView tv1;
rotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout);
tv1 = (TextView) findViewById(R.id.tv1);
tv1.setText("Other Text");
}
我希望这能回答你的问题,因为我对你的问题究竟是什么感到困惑