在一个Activity中使用多个View (可以借鉴的一种思路)
2011-02-13 20:13
429 查看
在一个Activity中使用多个View
如果把Activity看作MVC中的Control?它负责管理UI和接受事件(包括用户的输入),虽然说一个Activity通常对应一个屏幕,但事实上,我们是可以只用一个Activity管理多个不同的View来实现简单的逻辑。首先,我们增加一个新的资源描述layout/second.xml。<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView id="@+id/txt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello 中国" />
<Button id="@+id/go2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="back">
<requestFocus />
</Button>
</LinearLayout>
除了一个“Hello中国”以外,增加一个按钮可以返回前一个界面。然后,在代码中我们要为HelloTwo(工程名字)增加两个方法,setViewOneCommand和setViewTwoCommand,分别处理一下在不同界面时,从资源里加载组件并为组件绑定一个事件处理器。
public void setViewOneCommand() {
Button btn = (Button)findViewById(R.id.go);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
helloTwo.this.setContentView(R.layout.second);
helloTwo.this.setViewTwoCommand();
}
});
Button btnExit=(Button)findViewById(R.id.exit);
btnExit.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
helloTwo.this.finish();
}
});
}
public void setViewTwoCommand() {
Button btnBack=(Button)findViewById(R.id.go2);
btnBack.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
helloTwo.this.setContentView(R.layout.main);
helloTwo.this.setViewOneCommand();
}
});
}
最后,我们需要在onCreate的时候,也就是启动后的main界面上设置一下按钮事件处理器。新的onCreate方法如下:
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setTheme(android.R.style.Theme_Dark);
setContentView(R.layout.main);
setViewOneCommand();
}
编译,运行,OK。
可能是代码 编辑器有点问题,使代码显示不出来,所以从新编辑就没用编辑器,直接贴代码。
如果把Activity看作MVC中的Control?它负责管理UI和接受事件(包括用户的输入),虽然说一个Activity通常对应一个屏幕,但事实上,我们是可以只用一个Activity管理多个不同的View来实现简单的逻辑。首先,我们增加一个新的资源描述layout/second.xml。<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView id="@+id/txt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello 中国" />
<Button id="@+id/go2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="back">
<requestFocus />
</Button>
</LinearLayout>
除了一个“Hello中国”以外,增加一个按钮可以返回前一个界面。然后,在代码中我们要为HelloTwo(工程名字)增加两个方法,setViewOneCommand和setViewTwoCommand,分别处理一下在不同界面时,从资源里加载组件并为组件绑定一个事件处理器。
public void setViewOneCommand() {
Button btn = (Button)findViewById(R.id.go);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
helloTwo.this.setContentView(R.layout.second);
helloTwo.this.setViewTwoCommand();
}
});
Button btnExit=(Button)findViewById(R.id.exit);
btnExit.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
helloTwo.this.finish();
}
});
}
public void setViewTwoCommand() {
Button btnBack=(Button)findViewById(R.id.go2);
btnBack.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
helloTwo.this.setContentView(R.layout.main);
helloTwo.this.setViewOneCommand();
}
});
}
最后,我们需要在onCreate的时候,也就是启动后的main界面上设置一下按钮事件处理器。新的onCreate方法如下:
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setTheme(android.R.style.Theme_Dark);
setContentView(R.layout.main);
setViewOneCommand();
}
编译,运行,OK。
可能是代码 编辑器有点问题,使代码显示不出来,所以从新编辑就没用编辑器,直接贴代码。
相关文章推荐
- 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)
- 使用UIScrollView和UIPageControl做一个可以用手势来切换图片的效果
- 动态分割:最多可以有2×2个子窗口,所有窗格使用同一个View类
- 基于Android的OpenGL—使用GLSurfaceView创建一个Activity
- 写一个可以使用kingfisher加载图片的轮播器PPTView
- 关于不推荐使用嵌套多于一个activity的解释(用view代替)~~取自官方论坛
- 推荐一个UIAlertView的第三方扩展,可以大大简化UIAlertView的使用
- android中,如果使用imageButton可以在drawable 中设置一个selector,但是imageView设置不起作用
- Android在打开一个新的Activity浏览大图时使用ImageView/PhotoView的时候图片显示在屏幕上部的问题
- 使用一个小图片tile平铺到ImageView中或Activity背景
- MVC:一个View显示多个Model(多个Model你可以使用ViewBag或ViewData , 或者:Model["myInfo"] as)
- 可以在一个页面里面使用多个uitableview ,并使用同一个delegate
- 使用一个小图片tile平铺到ImageView中或Activity背景
- Android 使用setContentView在一个Activity进行界面切换
- android------使用TextView链接打开一个Activity
- 利用运行时,给UIImageView写一个分类,交换里面的setImage的方法,可以重绘图片,提高内存的利用率(要是没有重绘图片,直接使用系统提供的setImag就会造成占用大量的内存问题)
- 5.0及以上系统上使用CircleImageView圆形头像出现方块背景问题(上一个Activity中的页面)
- 换一种思路--使用behavior实现recyclerView的下拉加载更多
- 一个游戏中玩家总经验值达到200就可以到达2级,达到400可以升到3级,达到600可升4级,达到800可升5级依此类推(玩家新创建的角色为0经验1级)。游戏中有一种超级经验丹,玩家1级的时候使用超级经
- 使用setContentView可以在Activity中动态切换显示的View