通用的页面跳转办法有两种:
1、Intent
Intent合适Activity与Activity之间的跳转,按返回键可以直接返回前一页面
毛病:须要到Manifest注册Activity
2、setContentView
合适同一Activity里的不合View之间跳转
长处:按返回键不会返回到前一页面,须要本身添加按键监听代码来实现
只切换Layout运行速度会快点,因为启动activity是最耗时的。
数据传递也简单,不消Intent.setExtra之类的。
毛病是所有控件的事务处理惩罚、加载之类的操纵全集中由activity经管,拆分不敷清楚
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); } }
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); } }
评论加载中...
|
Copyright@ 2011-2017 版权所有:大连仟亿科技有限公司 辽ICP备11013762-1号 google网站地图 百度网站地图 网站地图
公司地址:大连市沙河口区中山路692号辰熙星海国际2215 客服电话:0411-39943997 QQ:2088827823 42286563
法律声明:未经许可,任何模仿本站模板、转载本站内容等行为者,本站保留追究其法律责任的权利! 隐私权政策声明