通用的頁(yè)面跳轉辦法有兩種:
1、Intent
Intent合適Activity與Activity之間的跳轉,按返回鍵可以直接返回前一頁(yè)面
毛?。喉氁組anifest注冊Activity
2、setContentView
合適同一Activity里的不合View之間跳轉
長(cháng)處:按返回鍵不會(huì )返回到前一頁(yè)面,須要本身添加按鍵監聽(tīng)代碼來(lái)實(shí)現
只切換Layout運行速度會(huì )快點(diǎn),因為啟動(dòng)activity是最耗時(shí)的。
數據傳遞也簡(jiǎn)單,不消Intent.setExtra之類(lèi)的。
毛病是所有控件的事務(wù)處理懲罰、加載之類(lèi)的操縱全集中由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; /* * 因為setContentVeiw()函數返回是void,體系中沒(méi)有供給獲取當前View的函數 * 所以此處添加一個(gè)整形變量用來(lái)指導當前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會(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體式格式跳轉"); button1.setOnClickListener(new OnClickListener(){ public void onClick(View v) { /*此處用Intent來(lái)實(shí)現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體式格式來(lái)實(shí)現同一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); } /* * 這里重寫(xiě)onKeyDown()函數,實(shí)現返回鍵的監聽(tīng) * 若是經(jīng)由過(guò)程顯示的View對keyListener進(jìn)行監聽(tīng),則返回鍵監聽(tīng)不到 * 所以此處是經(jīng)由過(guò)程在A(yíng)ctivity里面重寫(xiě)onKeyDown()函數來(lái)實(shí)現監聽(tīng) * 此處若是不阻礙監聽(tīng)的話(huà),在顯示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體式格式來(lái)實(shí)現同一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-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號 google網(wǎng)站地圖 百度網(wǎng)站地圖 網(wǎng)站地圖
公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話(huà):0411-39943997 QQ:2088827823 37482752
法律聲明:未經(jīng)許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明