扩展Hello World教程

时间:2013-05-23 18:30:53

标签: java android xml

我正在编写我的第一个应用程序,我仍在学习JavaXML。 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),因为我想在活动屏幕上添加更多内容。您建议采用哪些解决方案?

2 个答案:

答案 0 :(得分:3)

为了加载您的Activity的UI,

setContentView()是必需的。您有两个选项可以创建发送到setContentView()的主视图:

  1. 您可以使用Java代码创建布局。

  2. 您可以在XML文件中创建布局。

  3. 通常第二个是静态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");
}

我希望这能回答你的问题,因为我对你的问题究竟是什么感到困惑