Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> package jiekou.com.cn;

package jiekou.com.cn;

編輯:關於Android編程

摘要: 通用的頁面跳轉方法有兩種:1、IntentIntent適合Activity與Activity之間的跳轉,按返回鍵可以直接返回前一頁面缺點:需要到Manifest注冊Activity2、setContentView適合同一Activity裡的不同View之間跳轉優點:按返回 ...
 
通用的頁面跳轉方法有兩種:

1、Intent

Intent適合Activity與Activity之間的跳轉,按返回鍵可以直接返回前一頁面

缺點:需要到Manifest注冊Activity

2、setContentView

適合同一Activity裡的不同View之間跳轉

優點:按返回鍵不會返回到前一頁面,需要自己添加按鍵監聽代碼來實現

[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); 
    } 

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);
    }
}

 

[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); 
    } 

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);
    }
}

 

 


 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved