2012-08-31 32 views
0

我是一名业余开发人员,正在创建一个简短的应用程序,我无法将特定活动的XML文件与Activity的Java方法“setContentView”一起使用。我需要的方法,因为我从计算生成数字和生成的数量是可变的取决于不同的参数。因此,每次我打电话的计算时间我得打电话:将XML与Activity的setContentView一起使用()

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

但我也创建活动的XML页面上的几个按钮,这也是我所想显示了活动的网页上。例如,这是我创建的一个按钮:

<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方法,则文本消息和文本消息从不出现,反之亦然。我如何让他们同时在活动屏幕上呈现?

+0

你应该只在你的onCreate()方法中调用一次setContentView(),并且我不清楚你试图完成什么。 –

回答

1

在您的activity_compute_number.xml中,您应该为您的按钮和textview指定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" /> 

通知的机器人:ID = “@ + ID/button_compute” 和机器人:ID = “@ + ID/textView_answer”。这给这个按钮和文本视图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。

0

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

相关问题