在Android ::当setContentView()被替换为新布局时,在运行时调用哪个方法

时间:2011-12-05 08:02:34

标签: android android-layout android-widget

嗨,我是Android编程新手。 我的问题是...... 我设计了2个布局。

1) R.layout.main :它包含一个TextField,一个EditText和一个Button

2) R.layout.window :它包含5个按钮

首先,显示R.layout.main。默认R.layout.main正在调用,所以当我按下该主布局的按钮时,它需要转发到r.layout.window。 转发过程没问题。

但是,当我打电话时 BUTTON button=(Button)findViewById(R.id.b1);// b1 is at R.layout.window

我得到一个例外..因此,我知道在调用setContentView()和从ONCREATE()调用时将调用哪种方法,是否可以调用多个布局R.id.namess ..

等待回复

1 个答案:

答案 0 :(得分:2)

public class UI extends Activity {
    LayoutInflater factory 
    View layout1;
    View layout2;    
public void onCreate(Bundle bundle){
 .....
 .....

 factory =getLayoutInflater();
 layout1 =  factory.inflate(R.layout.main, null);
 layout2 =  factory.inflate(R.layout.window, null);
.....
..... 
   }
}



//access R.id.b1 in R.layout.window;

试试这个

Button button=(Button)layout2.findViewById(R.id.b1);

如果您将内容视图设置为R.layout.main,那么就像setContentView(R.layout.main);一样 您可以R.layout.main findViewById()访问小部件,只有这样

Button b = (Button)findViewById(R.id.button1);

R.id.button1R.layout.main内,然后当您使用R.layout.main时,设置窗口布局的内容视图,然后访问其中的小部件

setContentView(R.layout.window);

//now you can access elements in window layout using findViewById
Button b2  =(Button)findViewById(R.id.button2); 

希望你理解