Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 基於startActivityForResult方法處理兩個Activity之間數據傳遞問題

基於startActivityForResult方法處理兩個Activity之間數據傳遞問題

編輯:關於Android編程

廢話不多說了,直接給大家貼代碼了。

package com.example.testactivityresquest;
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.Toast;
 public class MainActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     Button btn = (Button) findViewById(R.id.button);
     btn.setOnClickListener(new OnClickListener() {
       @Override
       public void onClick(View v) {
 
         Intent intent = new Intent(MainActivity.this, Activityb.class);
         int[] nums = { , };
         intent.putExtra(Changliang.KEY, nums);
         //有別於startActivity,如果啟動的其他Activity多了以後。相當於定一個特定KEY值,返回根據KEY值返回。
         startActivityForResult(intent, Changliang.requestCode);
 
       }
     });
   }
  //Activityb傳回來的數據在這個方法中獲取
   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     int s = data.getIntExtra(Changliang.Activity_b_KEY, );
 
     Toast.makeText(getApplicationContext(), "傳遞兩個數得到的和是:" + s, ).show();
 
   }
 }
 package com.example.testactivityresquest;
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.Toast;
 public class Activityb extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activityb);
     Intent intent = this.getIntent();
     int[] n = intent.getIntArrayExtra(Changliang.KEY);
     final int nums = n[] + n[];
     Toast.makeText(this, n[] + " " + n[], ).show();
     Button btn = (Button) findViewById(R.id.button);
     btn.setOnClickListener(new OnClickListener() {
       @Override
       public void onClick(View v) {
         Intent intent = new Intent(Activityb.this, MainActivity.class);
         intent.putExtra(Changliang.Activity_b_KEY, nums);
         // 將數據根據特定鍵值的意圖事件導入
         Activityb.this.setResult(Changliang.requestCode, intent);
         //關閉後返回主Activity
         Activityb.this.finish();
       }
     });
   }
 }
package com.example.testactivityresquest;
public class Changliang {
public static final String KEY="key";
public static final String Activity_b_KEY="key1";
public static final int requestCode=1987;
}

xml文件

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="#ff" >
   <Button
     android:id="@+id/button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentTop="true"
     android:layout_centerHorizontal="true"
     android:layout_marginTop="dp"
     android:text="啟動Activityb" />
 </RelativeLayout>
 <?xml version="." encoding="utf-"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="#ff"
   android:orientation="vertical" >
   <Button
     android:id="@+id/button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="返回Activity" />
 </LinearLayout>

別忘在AndroidManifast中注冊activityb。

運行效果圖:

startActivityForResult與startActivity的不同之處在於:

1、startActivity( )

僅僅是跳轉到目標頁面,若是想跳回當前頁面,則必須再使用一次startActivity( )。

2、startActivityForResult( )

可以一次性完成這項任務,當程序執行到這段代碼的時候,假若從T1Activity跳轉到下一個Text2Activity,而當這個Text2Activity調用了finish()方法以後,程序會自動跳轉回T1Activity,並調用前一個T1Activity中的onActivityResult( )方法。

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