通常来说,,一个Activity对应一个布局文件,可以通过setContentView()来设置绑定的布局。
通过setContentView给Activity换布局,不过一般不建议这么用,如果想要替换不同界面的话,可以用Activity管理几个Fragment来实现,或者可以动态的给layout文件中的Viewgroup添加View。
今天来说一下如何获取非本activity绑定的布局控件:
在Activity中,我们一般使用用findViewById(R.id.控件id)的方法获取控件。
PS:这种方法只适用于获取setContentView(R.layout.布局名)中对应布局上的控件。如果使用findViewById(R.id.控件id)的方式获取其他布局的控件则会报错
运行时异常:
空指针异常:
所以,我们可以用view类来获取其他布局的控件
view是所有交互式组件的基类。
view类继承至 Object 实现了 Drawable.Callback KeyEvent.Callback AccessibilityEventSource接口。
直接子类有:AnalogClock, ImageView, KeyboardView, MediaRouteButton, ProgressBar, Space, SurfaceView, TextView, TextureView, ViewGroup, ViewStub
间接子类无数:AbsListView, AbsSeekBar, AbsSpinner, AbsoluteLayout, ActionMenuView, AdapterView<T extends Adapter>, AdapterViewAnimator, AdapterViewFlipper...
借鉴自:Android的一些认识
具体方法:
View view = View.inflate(MainActivity.this, R.layout.布局名, null);
//inflate:视图填充器;这个为内部类,要使用上下文则为 类.this
TextView textview = (TextView) view.findViewById(R.id.控件id);
//一定要在view对象中绑定控件的id
这样就可以获取非本Activity绑定布局的控件了。