手機的世界哩,實現手機頁面的轉換最簡單作法為改變Activity的layout,只要善加利用這個,是可以做到很多頁面轉換的效果,也可以讓使用者選擇自己喜歡的系統樣式、背景圖案及文字顏色等等,直接按套用來改變版型。另外使用setContentView來換置頁面還有一個很棒的優點,就是所有程式裡的變數皆存在相同的狀態,無論是類別成員變數、類別函式等等,都可以在一個Activity下取得,沒有參數傳的的問題。比如說:訂票系統的程式,首先layout01先讓使用者輸入資料(姓名、電話、信用卡卡號等等),下一畫面layout02為確認畫面讓使用者進行確認,最後一畫面layout03進行刷卡交易的動作。
本篇在討論一個Activity下,如何做到手機頁面轉換,而不是切換Activity! 切換Activity請看另一篇文章 http://style77125tech.pixnet.net/blog/post/13440183
小試身手小範例:
佈局的兩個layout分別為layout01(main.xml)以及layout02(mylayout.xml),預設載入的layout為main.xml,此layout內有一個按鈕(Button)當按下此Button可以跳到layout02去,同時在layout02佈局內也有一個按鈕(Button)當按下此Button可以跳到layout01去。
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/TextView01"
android:text="This is Layout01!"
android:layout_marginTop="10sp"
android:textSize="20sp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40sp"
android:text=" Go to Layout02"
android:id="@+id/Button01"
/>
</LinearLayout>
mylayout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/TextView02"
android:text="This is Layout02"
android:layout_marginTop="10sp"
android:textSize="20sp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40sp"
android:text=" Go to Layout01"
android:id="@+id/Button02"
/>
</LinearLayout>
Java檔
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class TestExam001 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button01 = (Button)findViewById(R.id.Button01);
button01.setOnClickListener(new Button.OnClickListener(){
publicvoid onClick(View v) {
// TODO Auto-generated method stub
jumpToLayout02();
}
});
}
public void jumpToLayout02(){
setContentView(R.layout.mylayout);
Button button02= (Button)findViewById(R.id.Button02);
button02.setOnClickListener(new Button.OnClickListener(){
publicvoid onClick(View v) {
// TODO Auto-generated method stub
jumpToLayout01();
}
});
}
public void jumpToLayout01(){
setContentView(R.layout.main);
Button button01 = (Button)findViewById(R.id.Button01);
button01.setOnClickListener(new Button.OnClickListener(){
publicvoid onClick(View v) {
// TODO Auto-generated method stub
jumpToLayout02();
}
});
}
}

請問一下 如何在切換頁面的同時 也把我第一個畫面的資料(editText輸入) 丟進第二格畫面呢(TextView)
http://style77125tech.pixnet.net/blog/post/16330639 請參考這篇
樓主 你的方法太狠了 做不到點擊返回鍵返回啊....
目的不同,所以方式不同啦。
請問一下 我直接複製您的方式 也不行跳轉 這該如何? 拜託拜託~~
這方式其實我都有測試過,可能要看一下你的才清楚。 我比較常用intent的方式跳到另一個Activity,所以或許你可以參考這篇。 http://style77125tech.pixnet.net/blog/post/13440183
前面的提問者有可能是publicvoid沒有分開(直接複製) 不好意思我問題會有點多 1.樓主 setContentView(R.layout.main);出現了2次那樣重新製造main的畫面(2個主畫面)嗎,還是會回到原本的畫面。 2.我想做1個邏輯2個畫面(橫向與直向)有辦法達成嗎? 3.有些平板會鎖畫面(永遠橫向)要如何取得他的權限並改成直向呢 感謝樓主提供很多細部的資訊
感謝感謝 我是初學者 照這做真的做出來了
不是用startActivity轉頁面的缺點就是 setContentView後畫面的物件設定會跑掉,你的範例很簡單只有一個按鈕,等多個按鈕問題就出了