Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android中Activity處理返回結果的實現方式,androidactivity

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

編輯:關於android開發

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


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

為了實現這個功能,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     <TextView
11         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     <Button
18         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     @Override
13     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             @Override
21             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             @Override
29             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     @Override
37     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     @Override
12     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             @Override
24             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,返回上一個activity
31             }
32         });
33         lv.setAdapter(adapter);
34     }
35 }

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved