通用的頁面跳轉辦法有兩種:
1、Intent
Intent合適Activity與Activity之間的跳轉,按返回鍵可以直接返回前一頁面
毛?。喉氁組anifest注冊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-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號 google網站地圖 百度網站地圖 網站地圖
公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話:0411-39943997 QQ:2088827823 37482752
法律聲明:未經許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明