Android中Activity處理返回結果的實現方式

來源:互聯網
上載者:User

標籤:tool   data   style   request   size   cte   line   textview   err   

大家在網上購物時都有這樣一個體驗,在確認訂單選擇收貨人以及地址時,會跳轉頁面到我們存入網站內的所有收貨資訊(包含收貨地址,收貨人)的介面供我們選擇,一旦我們點擊其中某一條資訊,則會自動跳轉到訂單提交介面,此時的收貨資訊已經變為我們之前選擇的收件資訊、

為了實現這個功能,Android提供了一個機制,跳轉到其他activity時,再返回,可以接受到其他activity返回的值,無需再start新的當前activity;下面的樣本中,建立兩個activity,其中在MainActivity中提示輸入“您的屬相”,然後單擊TextView“您的屬相”啟動Main2Activity,在Main2Activity中選擇屬相,然後當返回MainActivity時,把之前Main2Activity中選擇的資料原樣返回給MainActivity。實現效果如:

核心實現步驟如下:

(1)在MainActivity中設定啟動帶結果requestCode的Activity

(2)在MainActivity中設定處理返回結果的方法

(3)在Main2Activity中設定返回結果

具體布局以及功能實現代碼如下:(1)layout中 activity_main.xml首頁布局:
 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3     xmlns:android="http://schemas.android.com/apk/res/android" 4     xmlns:tools="http://schemas.android.com/tools" 5     android:id="@+id/activity_main" 6     android:layout_width="match_parent" 7     android:layout_height="match_parent" 8     android:orientation="vertical" 9     tools:context="com.example.administrator.testactivity.MainActivity">10     <TextView11         android:id="@+id/tv1"12         android:layout_width="match_parent"13         android:layout_height="wrap_content"14         android:hint="潘侯爺的屬相"15         android:gravity="center"16         android:textSize="30sp"/>17     <Button18         android:id="@+id/btn1"19         android:layout_width="wrap_content"20         android:layout_height="wrap_content"21         android:layout_gravity="right"22         android:text="確定"/>23 </LinearLayout>
(2)layout中 activity_main2.xml第二頁布局:
 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3     xmlns:tools="http://schemas.android.com/tools" 4     android:id="@+id/activity_main2" 5     android:layout_width="match_parent" 6     android:layout_height="match_parent" 7     tools:context="com.example.administrator.day15.Main2Activity"> 8     <ListView 9         android:id="@+id/lv"10         android:layout_width="match_parent"11         android:layout_height="match_parent"></ListView>12 </RelativeLayout>
(3) java中首頁布局MainActivity.java實現代碼:
 1 import android.content.Intent; 2 import android.support.v7.app.AppCompatActivity; 3 import android.os.Bundle; 4 import android.view.Gravity; 5 import android.view.View; 6 import android.widget.Button; 7 import android.widget.TextView; 8 import android.widget.Toast; 9 public class MainActivity extends AppCompatActivity {10     private Button btn1;11     private TextView tv1;12     @Override13     protected void onCreate(Bundle savedInstanceState) {14         super.onCreate(savedInstanceState);15         setContentView(R.layout.activity_main);16         btn1 = (Button) findViewById(R.id.btn1);17         tv1 = (TextView) findViewById(R.id.tv1);18         tv1.setClickable(true);19         tv1.setOnClickListener(new View.OnClickListener() {20             @Override21             public void onClick(View v) {22                 Intent intent = new Intent(MainActivity.this, Main2Activity.class);23                 //設定啟動intent以及對應的請求碼24                 startActivityForResult(intent, 2);25             }26         });27         btn1.setOnClickListener(new View.OnClickListener() {28             @Override29             public void onClick(View v) {30               Toast t=  Toast.makeText(MainActivity.this, tv1.getText().toString(), Toast.LENGTH_SHORT);31                 t.setGravity(Gravity.TOP,0,0);32                 t.show();33             }34         });35     }36     @Override37     protected void onActivityResult(int requestCode, int resultCode, Intent data) {38         super.onActivityResult(requestCode, resultCode, data);39         //建議添加邏輯判斷(使請求碼與結果碼配對,確保返回結果是請求碼所請求的)40         tv1.setText(data.getStringExtra("select"));41     }42 }
(4) java中第二頁頁布局Main2Activity.java實現代碼:
 1 import android.content.Intent; 2 import android.support.v7.app.AppCompatActivity; 3 import android.os.Bundle; 4 import android.view.View; 5 import android.widget.AdapterView; 6 import android.widget.ArrayAdapter; 7 import android.widget.ListView; 8 public class Main2Activity extends AppCompatActivity { 9     private ListView lv;10     String[] names={"馬","牛","虎","兔","龍"};11     @Override12     protected void onCreate(Bundle savedInstanceState) {13         super.onCreate(savedInstanceState);14         setContentView(R.layout.activity_main2);15         lv = (ListView) findViewById(R.id.lv);16         //使用ArrayAdapter為ListView每個儲存格填補值資料17         ArrayAdapter<String> adapter = new ArrayAdapter<String>(Main2Activity.18                 this,android.R.layout.simple_list_item_single_choice,names);19         //設定ListView為單選模式20         lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);21         //為ListView中的每個ITERM設定單擊事件22         lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {23             @Override24             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {25                 Intent intent =new Intent(Main2Activity.this, MainActivity.class);;26                 //將選中的item對應的資訊配上索引值裝入Extra中供傳遞用27                 intent.putExtra("select",names[position]);28                 //設定3為結果碼29                 setResult(3,intent);30                 finish();//結束當前Activity,返回上一個activity31             }32         });33         lv.setAdapter(adapter);34     }35 }

 

Android中Activity處理返回結果的實現方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.