1) Intent無參數Activity跳轉 java
大部分的Android應用程序都是有多個頁面(即 Activity)組成,那麼Activity之間的跳轉就成爲了一個最重要的操做,咱們在Android中使用Intent對象來實現界面之間的跳轉。Intent實現界面之間的跳轉經常使用兩種語法形式實現: android
第一種:Intent intent = new Intent(源Activity.this, 目標Activity.class); 佈局
第二種:Intent intent = new Intent(); this
Intent.setClass(源Activity.this, 目標Activity.class); spa
Ø 應用案例 xml
實現兩個Activity之間的無參數跳轉應用。 對象
Ø 實現效果參考圖 事件
Ø 局部關鍵實現代碼 圖片
l Activity_first.xml佈局文件對按鈕的聲明 字符串
<Button
android:id="@+id/btnGoto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="跳轉至第2個Activity"/>
l Activity_second.xml佈局文件對按鈕的聲明
<Button
android:id="@+id/btnGoto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="跳轉至第1個Activity"/>
l AndroidManifest.xml清單文件中對窗體的聲明
<activity
android:name=".FirstActivity"
android:label="案例10.1 無參數跳轉界面1">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=.SecondActivity"
android:label="案例10.1 無參數跳轉界面2"/>
l FirstActivty.java中【跳轉至第2個Activity】單擊事件代碼
Intent
intent = newIntent(FirstActivity.this,
SecondActivity.class);
startActivity(intent);
l SecondActivity.java中【跳轉至第1個Activity】單擊事件代碼
Intent
intent = newIntent();
intent.setClass(SecondActivity.this, FirstActivity.class);
startActivity(intent);
2)Intent帶參數Activity跳轉(使用Intent.putExtra和Bundle)
窗體之間的跳轉也須要參數的傳遞,咱們在Android中實現窗體之間的參數傳遞主要有兩種方式:一種是採用putExtra()方法;另外一種是採用Bundle對象進行參數封裝傳遞。
第一種:使用putExtra()方法實現參數傳遞
Ø 方法語法:putExtra(String name, Object value);
Ø 參數說明:name:表明參數的變量名稱,
value:表明參數的值
該方法爲Intent對象中的一個方法,使用intent.putExtra(……)來實現參數的設置,那另外一端接受方須要獲取發送方傳入的Intent對象,同時從Intent對象中經過設置的參數名稱獲取相應的參數值並進行處理,在這裏要注意的是除字符串類型的參數外,其他類型的參數獲取的時候都須要有默認值,以備沒法正常獲取參數時,使用默認值替代。
Ø 應用案例
實現兩個窗體之間的跳轉並使用Intent對象的putExtra方法完成參數
的傳遞。設置參數後,任然使用startActivity(intent)方法進行頁面之間的跳轉動做。
Ø 實現參考圖
Ø 局部關鍵實現代碼
l SendActivity.java中【發送消息】單擊事件動做處理代碼
Intent
intent = newIntent(SendActivity.this,
ReceiveActivity.class);
String name = txtName.getText().toString();
int age = Integer.parseInt(txtAge.getText().toString());
intent.putExtra("name", name);
intent.putExtra("age", age);
startActivity(intent);
l ReceiveActivity.java中獲取Intent攜帶參數並顯示的處理代碼
Intent
intent = this.getIntent();
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 0);
this.txtMessage.setText("姓名:"+name+"\n年齡:"+age);
第二種:使用Bundle對象實現參數封裝後頁面跳轉傳值
Ø 構造方法:Bundle bundle = new Bundle();
Ø 對象方法:putXXXX(String name, Object value); 設置傳遞參數,XXXX表明傳遞參數的類型。
Ø 參數說明:name:表明參數的變量名稱,
value:表明參數的值
Bundel對象使用putXXXX()方法將待傳遞的參數封裝到Bundle對象中,使用Intent對象的putExtras(Bundle bundle)方法將參數總體打包進行傳遞,要獲取發送方傳入的Bundel對象的時,使用getExtras()方法獲取Bundel對象,同時使用getXXX(String name)方法獲取Bundle中封裝的某個具體參數的變量名稱。在這裏要注意的是除字符串類型的參數外,其他類型的參數獲取的時候都須要有默認值,以備沒法正常獲取參數時,使用默認值替代。
Ø 應用案例
實現一個新用戶信息註冊並顯示註冊信息的功能,該功能使用Bundle對象完成多參數的封裝傳遞,並在接收方實現對Bundle封裝數據的處理操做。
Ø 實現參考圖片
Ø 局部關鍵實現代碼
l RegisterActivity.java【立刻註冊】按鈕單擊事件處理代碼
// 步驟1:獲取編輯文本框中用戶輸入的數據
String name = txtName.getText().toString();
String dept = txtDept.getText().toString();
String job = txtJob.getText().toString();
String email = txtEmail.getText().toString();
// 步驟2:建立Bundled對象並將數據進行封裝
Bundle bundle = newBundle();
bundle.putString("name", name);
bundle.putString("dept", dept);
bundle.putString("job", job);
bundle.putString("email", email);
// 步驟3:建立Intent對象
Intent intent = newIntent();
intent.setClass(RegisterActivity.this,
ResultActivity.class);
// 使用putExtras()方法將Bundle對象裝載到Intent中
intent.putExtras(bundle);
startActivity(intent);
l ResultActivity.java 接受Bundle封裝的數據並進行獲取顯示
// 步驟1:獲取Intent對象
Intent intent = this.getIntent();
// 步驟2:使用getExtras()方法獲取Bundle對象
Bundle bundle =
intent.getExtras();
// 步驟3:使用getXXX(String name)方法獲取Bundle中的對應數據
String name =
bundle.getString("name");
String dept =
bundle.getString("dept");
String job =
bundle.getString("job");
String email =
bundle.getString("email");
this.txtMessage.setText("姓名:" + name + "\n部門:" +dept
+ "\n職位:" + job+ "\n電子郵箱:" + email);
做者:中軟卓越天津ETC