1

我正在编写我的第一个应用程序,并且仍在学习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 中使用“消息”而不是这个 java 文档?我想避免使用 setContentView(textView) 因为我想向活动屏幕添加更多内容。你建议什么解决方案?

4

2 回答 2

3

setContentView()为您的 Activity 加载 UI 是必需的。您有两个选项来创建您发送到的主视图setContentView()

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

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

通常第二个是静态 UI 的首选,而当 UI 更动态时使用第一个。

我建议您熟悉Android 官方文档。特别是,您应该查看UI 概述以了解 Android UI 框架。

您可能还对使用字符串资源来存储用于“附加”的键感兴趣,这些键存储在Intent发送到您的onCreate()方法的 中。

于 2013-05-23T18:34:12.763 回答
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");
}

我希望这能回答你的问题,因为我对你的问题到底是什么有点困惑

于 2013-05-23T18:36:25.853 回答