標籤:
說明:
跳轉頁面,並將第一頁的Edittext輸入的資料通過按鈕Button傳到第二頁用Edittext顯示,點擊第二頁的
返回按鈕Button返回第一頁(改變第二頁的Edittext的內容會傳至第一頁的Edittext顯示)
——有傳回值的方式
1.給第一頁面Edittext和Button設定id
2.設定Button的點擊監聽
(1)擷取view執行個體,通過Edittext的id找到Edittext
(2)擷取內容並轉為文本形式
getText().toString()
(3)設定Intent(意圖)告訴第二個頁面,我要跳轉了
Intent in = new Intent(this,excise2.class);
(4)在跳轉的同時,通過Intent將輸入的常值內容一併儲存傳過去
in.putExtra("myet",str);
(5)開始跳轉 區別普通方式
startActivityForResult(in,1);
3.接受頁面用Edittext接收
(1)給接受頁面Edittext和Button設定id
(2)建立第二頁面
public class excise2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.excise2);
(3)接收Intent意圖 get
Intent in = getIntent();
(4)取存入的資料 get get
String str = in.getExtras().getString("myet");
(5)顯示資料
操作View執行個體
EditText mytv= ( EditText)findViewById(R.id.jieshouzhi);
恢複輸入框裡面的內容(設定) set
mytv.setText(str);
4.設定按鈕的點擊監聽
(1)儲存返回資料 也要用Intent
EditText ett = (EditText)findViewById(R.id.jieshouzhi);
(2)設定返回資料
先設定ResultCode,再設定儲存資料的意圖
Intent in = new Intent();
setResult(RESULT_OK,in.putExtra("mytv",ett.getText().toString()));
(3)關閉
finishi();
5.在第一個頁面接收返回的值
(1)重寫回調方法
onActivityResult(int requestCode, int resultCode, Intent data)
(2)加判斷條件
(3) 先擷取返回的資訊
String str = data.getExtras().getString("mytv");
(4)顯示
EditText ett = (EditText)findViewById(R.id.ett);
5)傳值 設定 set
ett.setText(str);
excise1.xml
<EditText android:layout_width="200dp" android:layout_height="wrap_content" android:textSize="40dp" android:id="@+id/ett" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="傳值至第三頁" android:textSize="40dp" android:id="@+id/chuanzhi" android:layout_marginTop="100dp" android:onClick="clickcz" />
excise1.java
public void clickcz(View view) { //Toast靜態方法 直接用類名調用,不需要執行個體化 //構建了Toast方法 執行個體方法調用 方法鏈 Toast.makeText(this,"這是滑鼠點擊監聽觸發的",Toast.LENGTH_LONG).show(); //取得要傳遞的資訊 //擷取View執行個體 EditText ett = (EditText)findViewById(R.id.ett); //擷取內容 String str = ett.getText().toString(); //跳轉用意圖 Intent in = new Intent(this,excise2.class); //儲存內容 通過Intent //Extra 擴充 實際上是一個HashMap,進行限制 putExtra 是一個bundle in.putExtra("myet",str); //開始跳轉 無傳回值的寫法 //startActivity(in); //開始跳轉 有傳回值的寫法 //啟動方式,有傳回值 //第一個參數 intent //第二個參數 requestCode 請求碼 startActivityForResult(in,1); } //處理返回資訊的監聽(回調方法) //監聽所有返回資訊的 //必須要有requestCode區分由哪個請求返回的 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode ==1) if(resultCode == RESULT_OK) { //先擷取返回的資訊 String str = data.getExtras().getString("mytv"); //顯示 EditText ett = (EditText)findViewById(R.id.ett); //傳值 設定 set ett.setText(str); } else { Toast.makeText(this,"返回的內容有錯誤",Toast.LENGTH_LONG); } }
excise2.xml
<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="excise2 第三頁" android:textSize="40dp" android:id="@+id/jieshouzhi" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="250px" android:text="帶傳回值得返回" android:textSize="40dp" android:id="@+id/clickec4" android:onClick="clickec4"/>
excise2.java
package com.example.chenshuai.excise;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.EditText;/** * Created by chenshuai on 2016/3/20. */public class excise2 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.excise2); //接受資訊 //1.接受傳遞過來的意圖 Intent in = getIntent(); //2.取資料 String str = in.getExtras().getString("myet"); //3.顯示在哪裡 //操作View執行個體 EditText mytv= (EditText)findViewById(R.id.jieshouzhi); //恢複輸入框裡面的內容(設定) set mytv.setText(str); }public void clickec4(View v) { //儲存返回資料 也要用Intent EditText ett = (EditText)findViewById(R.id.jieshouzhi); //設定返回資料 //先設定ResultCode,再設定儲存資料的意圖 Intent in = new Intent(); setResult(RESULT_OK,in.putExtra("mytv",ett.getText().toString())); finish(); }}
Android——關於Activity跳轉的返回(無傳回值和有傳回值)——有傳回值