易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
首页
/
操作系统
/
Linux
/
Android页面跳转实现方法讲解(纯Java)
通用的页面跳转方法有两种:
1、Intent
Intent适合Activity与Activity之间的跳转,按返回键可以直接返回前一页面
缺点:需要到Manifest注册Activity
2、setContentView
适合同一Activity里的不同View之间跳转
优点:按返回键不会返回到前一页面,需要自己添加按键监听代码来实现
IntentTest.java代码
import
Android.app.Activity;
import
android.content.Intent;
import
android.os.Bundle;
import
android.view.KeyEvent;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.*;
public
class
IntentTest
extends
Activity {
private
LinearLayout mainView=
null
;
private
Button button1=
null
;
private
Button button2=
null
;
private
LinearLayout layout=
null
;
private
TextView tv=
null
;
/*
* 由于setContentVeiw()函数返回是void,系统中没有提供获取当前View的函数
* 所以此处添加一个整形变量用来指示当前View的id
*/
private
int
currentViewId;
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
//tv初始化
tv=
new
TextView(
this
);
tv.setText(
"这是layout里面的tv"
);
//layout初始化
layout=
new
LinearLayout(
this
);
layout.setId(
100
);
//这里需要指定id,否则默认的id会和mainView一样,都是-1
layout.setLayoutParams(
new
LinearLayout.LayoutParams(-
1
,-
1
));
layout.addView(tv);
//button1初始化
button1=
new
Button(
this
);
button1.setLayoutParams(
new
LinearLayout.LayoutParams(-
2
,-
2
));
button1.setText(
"Intent方式跳转"
);
button1.setOnClickListener(
new
OnClickListener(){
public
void
onClick(View v) {
/*此处用Intent来实现Activity与Activity之间的跳转*/
Intent intent=
new
Intent();
intent.setClass(IntentTest.
this
,MyActivity.
class
);
//Intent intent=new Intent(IntentTest.this,MyActivity.class);
startActivity(intent);
}
});
//button2初始化
button2=
new
Button(
this
);
button2.setLayoutParams(
new
LinearLayout.LayoutParams(-
2
,-
2
));
button2.setText(
"setContentView方式跳转"
);
button2.setOnClickListener(
new
OnClickListener(){
public
void
onClick(View v) {
//此处用setContentView方式来实现统一Activity不同View跳转
setCurrentView(layout);
}
});
//mianView初始化
mainView=
new
LinearLayout(
this
);
mainView.setId(
1000
);
//指定id
mainView.setLayoutParams(
new
LinearLayout.LayoutParams(-
1
,-
1
));
mainView.setOrientation(LinearLayout.VERTICAL);
mainView.addView(button1);
mainView.addView(button2);
//显示mainView
setCurrentView(mainView);
}
/*
* 这里重写onKeyDown()函数,实现返回键的监听
* 如果通过显示的View对keyListener进行监听,则返回键监听不到
* 所以此处是通过在Activity里面重写onKeyDown()函数来实现监听
* 此处如果不拦截监听的话,在显示layout后按返回键则直接执行退出程序
*/
public
boolean
onKeyDown(
int
keyCode, KeyEvent event) {
if
(keyCode == KeyEvent.KEYCODE_BACK) {
if
(currentViewId==layout.getId()){
setCurrentView(mainView);
}
else
{
System.exit(
0
);
}
return
false
;
}
return
false
;
}
/*自定义函数setCurrentView()*/
public
void
setCurrentView(View view){
currentViewId=view.getId();
//此处用setContentView方式来实现统一Activity不同View跳转
setContentView(view);
}
}
MyActivity.java代码
import
android.app.Activity;
import
android.os.Bundle;
import
android.widget.TextView;
public
class
MyActivity
extends
Activity{
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
TextView tv=
new
TextView(
this
);
tv.setText(
"我是MyActivity里的tv"
);
setContentView(tv);
}
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图