0

我是一名业余开发人员,正在创建一个简短的应用程序,我无法同时使用特定活动的 XML 文件以及 Activity 的 Java 方法“setContentView”。我需要该方法,因为我正在从计算中生成数字,并且生成的数字会根据不同的参数而变化。因此,每次我调用计算时,我都必须调用:

textView.setText(message + " is " + output);
setContentView(textView);

但我还在 Activity 的 XML 页面上创建了几个按钮,我也想在 Activity 的页面上显示它们。例如,这是我创建的按钮之一:

<Button 
    android:layout_marginTop="100dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_quit"
    android:onClick=".quit" />

但是,如果我打电话:

setContentView(R.layout.activity_compute_number);

在我前面提到的可变文本消息的设置内容视图之后,XML 文件会覆盖文本消息,并且如果我反过来调用两个 setContentView 方法,则文本消息永远不会显示,反之亦然。如何让它们同时在活动屏幕上呈现?

4

2 回答 2

1

在您的activity_compute_number.xml中,您应该为您的按钮和文本视图分配一个ID 。这样您就可以引用您的按钮和 textView。

 <Button
    android:id="@+id/button_compute"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="100dp"
    android:onClick=".quit"
    android:text="@string/button_quit" />

<TextView
    android:id="@+id/textView_answer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="100dp" />

注意 android:id=" @+id /button_compute" 和android:id="@+id/textView_answer"。这给这个按钮和 textview id 分别称为 button_compute 和 textView_answer。

然后将您的 onCreate 更改为以下内容:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btnCompute = (Button)findViewById(R.id.button_compute);
    TextView tvAnswer = (TextView)findViewById(R.id.textView_answer);


    btnCompute.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            /*
             * DO COMPUTATION here
            */

            tvAnswer.setText(answer);
        }
    });
}

onCreate()方法中,您只需调用一次 setContentView() 即可将视图设置为在activity_compute_number.xml中显示布局。您通过findViewById指定您在 xml 中设置的 id 来引用您的按钮和 textview 。

于 2012-08-31T04:13:44.530 回答
0

请阅读setContentView()方法的文档。
onCreate()方法中,您只能使用setContentView()一次。因此,您应该TestView在您的 XML 文件中添加一个或者可以
TextView txt = new TextView(this)
在您的活动中使用它。

于 2012-08-31T04:25:08.643 回答