国内自拍在线,久久久夜色精品,欧美日韩一区三区,国产黄a三级三级三级看三级男男,aaa一级片,久久久久久久久一区二区三区,中文一区在线

    電話

    0411-39943997

仟億科技
客服中心
  • 電話
  • 電話咨詢:0411-39943997
  • 手機(jī)
  • 手機(jī)咨詢:15840979770
    手機(jī)咨詢:13889672791
網(wǎng)絡(luò)營銷 >更多
您現(xiàn)在的位置:首頁 > 新聞中心 > 常見問題

Android安卓頁面切換辦法和差別

作者:billionnet 發(fā)布于:2012/3/28 17:54:17 點(diǎn)擊量:

通用的頁面跳轉(zhuǎn)辦法有兩種:


1、Intent


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


毛病:須要到Manifest注冊(cè)Activity


2、setContentView


合適同一Activity里的不合View之間跳轉(zhuǎn)


長處:按返回鍵不會(huì)返回到前一頁面,須要本身添加按鍵監(jiān)聽代碼來實(shí)現(xiàn)


 


只切換Layout運(yùn)行速度會(huì)快點(diǎn),因?yàn)閱?dòng)activity是最耗時(shí)的。
數(shù)據(jù)傳遞也簡單,不消Intent.setExtra之類的。
毛病是所有控件的事務(wù)處理懲罰、加載之類的操縱全集中由activity經(jīng)管,拆分不敷清楚 


 


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;
    
    /*
     * 因?yàn)閟etContentVeiw()函數(shù)返回是void,體系中沒有供給獲取當(dāng)前View的函數(shù)
     * 所以此處添加一個(gè)整形變量用來指導(dǎo)當(dāng)前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,不然默認(rèn)的id會(huì)和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體式格式跳轉(zhuǎn)");
        button1.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                /*此處用Intent來實(shí)現(xiàn)Activity與Activity之間的跳轉(zhuǎn)*/
                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體式格式跳轉(zhuǎn)");
        button2.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                //此處用setContentView體式格式來實(shí)現(xiàn)同一Activity不合View跳轉(zhuǎn)
                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()函數(shù),實(shí)現(xiàn)返回鍵的監(jiān)聽
     * 若是經(jīng)由過程顯示的View對(duì)keyListener進(jìn)行監(jiān)聽,則返回鍵監(jiān)聽不到
     * 所以此處是經(jīng)由過程在Activity里面重寫onKeyDown()函數(shù)來實(shí)現(xiàn)監(jiān)聽
     * 此處若是不阻礙監(jiān)聽的話,在顯示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; 
    }
    
    /*自定義函數(shù)setCurrentView()*/
    public void setCurrentView(View view){
        currentViewId=view.getId();
        //此處用setContentView體式格式來實(shí)現(xiàn)同一Activity不合View跳轉(zhuǎn)
        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-2016 版權(quán)所有:大連千億科技有限公司 遼ICP備11013762-3號(hào)   google網(wǎng)站地圖   百度網(wǎng)站地圖   網(wǎng)站地圖

公司地址:大連市沙河口區(qū)中山路692號(hào)辰熙星海國際2317 客服電話:0411-39943997 QQ:2088827823 37482752

法律聲明:未經(jīng)許可,任何模仿本站模板、轉(zhuǎn)載本站內(nèi)容等行為者,本站保留追究其法律責(zé)任的權(quán)利! 隱私權(quán)政策聲明