2011-12-23 30 views
0

我想在应用程序中创建所有视图的实例,并且在执行过程中将适当的视图传递给Activity.setContentView() - 通过引用而不是id。 那么 - 如何正确创建视图知道它的ID?如何创建视图实例了解其ID?

附加问题: 当我将id传入Activity.setContentView时,如何创建视图实例? 每次我调用setContentView新实例创建?

问候所有

+0

为什么要这样做? – Yury 2011-12-24 00:20:55

回答

0

为什么要这样做?我的免责声明是,在一项活动中保留所有视图的实例是过度和不必要的。您应该将代码的功能分成多个活动,并且每个活动都有一个布局。

如果必须使用同一活动中的多视图,这种类型的行为的布局文件中可能是更好的做(把你的布局多个视图,然后显示/隐藏他们的代码)。

这就是说,你需要的是LayoutInflater类。充气布局,并做它你想要的。如果您在此布局中查找特定视图,请在该充气布局上使用findViewByID()方法。

LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); 
LinearLayout ll = inflater.inflate(R.layout.your_layout, null); 
View v = ll.findViewByID(R.id.view_name); 
//Do stuff with view or layout 
+0

你是否建议在应用程序(让说:游戏)有多个屏幕(主菜单,游戏,选项/名人堂)的情况下,他们都应该被视为单一布局的意见?如何在设计师中正确设计布局,最终每个1级的孩子都会传播到整个屏幕? – ardabro 2011-12-24 13:57:17

+0

我不建议你将多个视图保存到一个布局中。我建议将它们保持为独立的布局(不同的xml文件),并将它们与自己的独立活动一起使用。即您将拥有主菜单的活动,选项的不同活动,名人堂的不同活动等。这样做可以最大限度地减少每项活动的内存量,从而使Android系统更加轻松妥善管理。 – pav 2012-01-12 01:21:21