两种方法实现界面的切换:
1、Intent
Intent适合Activity与Activity之间的跳转,按返回键可以直接返回前一页面。
缺点:需要到Manifest注册Activity
2、setContentView
适合同一Activity里的不同View之间跳转。
优点:按返回键不会返回到前一页面,需要自己添加按键监听代码来实现。
只切换Layout运行速度会快点,因为启动activity是最耗时的。数据传递也简单,不用Intent.setExtra之类的。
缺点是所有控件的事件处理、加载之类的操作全集中由activity管理,拆分不够清晰。
【方法1】通过setContentView切换layout
这个我比较常用。有以下步骤:
①新建一个界面的layout的xml文件。
②触发某一控件(如Button),该控件已经加载监听器,监听器通过setContentView函数切换layout。
这样的实现整个过程都是在一个Activity上面实现,所有变量都在同一状态,因此所有变量都可以在这个Activity状态中获得。
代码如下:
[java]
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) this.findViewById(R.id.button1);
//给按钮设置监听器
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//通过调用setContentView函数切换layout
setContentView(R.layout.login);
}
});
}
【方法2】通过转换到另一个Activity
步骤如下:
①建一个Activity类。
②把该类注册到AndroidManifest.xml,如下:
<activity android:name=".LoginActivity"></activity>
③在原来的Activity上面通过创建Intent类来进行Activity的切换,代码如下:
[java]
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button_activity = (Button) this.findViewById(R.id.button2);
button_activity.setOnClickListener(new OnClickListener()){
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
}
});
}