简单的答案,是的,您可以使用任何一种方法。但是,每个都有一些限制,例如layout
如果要使用它们,必须在 xml 中设置一些属性。我想不出什么是副手,但我可以查一下。
在大多数情况下,layouts
在 xml 中创建要简单得多,但如果需要,您可以选择在 Java 中进行设置Views
,例如根据某些用户定义的变量layouts
创建未知数量的变量。Buttons
当您UI
在 xml 中创建您的时,然后您inflate
在您的 Java 代码中。这通常在onCreate()
使用中完成
setContentView(R.layout.main);
正如您在示例中看到的那样。但它也可以用充气机来完成。
这里要记住的是layout
,在尝试初始化views
中的任何一个之前,使用任一方法膨胀你的 ,否则在膨胀它包含的之前尝试调用定义的方法时,layout
你会得到一个。NPE
View
layout
正确的方法
**Examples of inflating views/layouts correctly**
Button mBtn;
public class AndroidDemo extends Activity {
private LinearLayout root;
@Override public void onCreate(Bundle state) {
super.onCreate(state);
setContentView(R.layout.main);
root = (LinearLayout) findViewById(R.id.root);
btn = (Button) findViewById(R.id.buttonId); // Button is initialized after inflating the layout
}
}
不正确的方式
public class AndroidDemo extends Activity {
private LinearLayout root;
@Override public void onCreate(Bundle state) {
super.onCreate(state);
Button mBtn = (Button) findViewById(R.id.buttonId); // Button is initialized before inflating layout which will return null
setContentView(R.layout.main);
root = (LinearLayout) findViewById(R.id.root);
}
}
我添加了上面的示例,因为我看到很多人犯了这个错误。所以不要这样做......你已经被警告了!:)