加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Android页面跳转实现方法分析

发布时间:2021-12-22 12:42:37 所属栏目:PHP教程 来源:互联网
导读:通用的页面跳转方法有两种: 1、Intent Intent适合Activity与Activity之间的跳转,按返回键可以直接返回前一页面 缺点:需要到Manifest注册Activity 2、setContentView 适合同一Activity里的不同View之间跳转 优点:按返回键不会返回到前一页面,需要自己添

通用的页面跳转方法有两种:
 
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);  
    }  
}  
 

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读