初学android,感觉代码文件和布局文件很混乱,不像VS中一个aspx文件就对应一个aspx.cs文件,都是一一对应的,在android里面我总是找不到是哪个xml文件在使用当前java文件,详细如下:
现在有一个主页面,这里命名为A;一个具体的设置页面,这里命名为B,在A页面上有一个按钮C,APP加载的时候自动加载A页面进来,代码如下:
static View mainView; static View v; void loadHome() { if (mainView== null) { mainView= View.inflate(MainActivity.this, R.layout.view_home , null); mainView.setTag(0); } mainContentLayout.removeAllViews(); mainContentLayout.addView(mainView); }
初始化没有问题,现在我在A页面上点击按钮C的时候,跳转到B页面,代码如下:
@Override public void onClick(View view) { int btnId = view.getId(); v = null; switch (btnId) { case R.id.btnhome: if (v == null) { v =View.inflate(MainActivity.this, R.layout.view_home , null); } mainContentLayout.removeAllViews(); mainContentLayout.addView(v); break; case R.id.btnAdd: if (v == null) { //这里跳转到设置界面 v =View.inflate(MainActivity.this, R.layout.activity_add_notes , null); } mainContentLayout.removeAllViews(); mainContentLayout.addView(v); break; } }
这个跳转都没有问题,现在问题来了:
在B页面上有很多控件,比如有一个button,那么这个button的监听事件应该写在哪里?我新建了一个java文件,专门来处理这个B页面的逻辑,但是貌似关联不起来。
你的代码不是页面跳转,而是把A页面的所有View移除后,inflate B的页面布局,将B的页面布局,加载到A页面里。执行页面跳转,应该使用startActivity(Intent intent)方法。
如果你确实是要把A页面的所有View移除,然后把B布局加载到A中,button的监听事件应该写在A的Activity中,在A文件中,给B设置监听事件;如果你想新建一个java文件C,用来处理B页面的逻辑,可以将A对象传递给C,这样直接应用耦合性高一些,不利于扩展,所以,你也可以通过接口监听回调的方式。
Intent intent = new Intent();
intent.setClass(ActA.this, ActA.class);
startActivity(intent);
Intent.setClass
参考以下这个
http://www.cnblogs.com/51pansou/p/5165851.html