當前位置:編程學習大全網 - 源碼下載 - 安卓不同頁面跳轉到同壹個頁面取返回值 在onactivityresult裏怎麽寫

安卓不同頁面跳轉到同壹個頁面取返回值 在onactivityresult裏怎麽寫

現有MainActivity,當它進入到SecondActivity後,在SecondActivity中進行了某些操作然後需要將值返回給MainActivity時,

於是就可以用到onActivityResult() 這個方法了,下面呢,我就具體來介紹壹下用法。

不過在這之前,先講壹下intent的用法:

對於intent主要的分類主要包括隱式意圖和顯式意圖。顯式意圖通常主要是啟動本應用中的Activity之間的數據,

而隱式意圖則常見於啟動系統中的某些特定的動作,比如打電話,或者是跨應用的Activity啟動。

壹般來說:

顯式意圖:調用Intent.setComponent()或Intent.setClass()方法明確指定了組件名的Intent為顯式意圖,顯式意圖明確指定了Intent應該傳遞給哪個組件。

隱式意圖:沒有明確指定組件名的Intent為隱式意圖。 Android系統會根據隱式意圖中設置的動作(action)、類別(category)、

數據(URI和數據類型)找到最合適的組件來處理這個意圖。

1、MainActivity裏面的主要代碼

(1)當需要返回值時,那麽在啟動另壹個Activity時要用到startActivityForResult(intent, REQUEST_CODE);

註意第二個參數是請求的int類型的值,這個值要在onActivityResult()方法中和requestCode做判斷的,

由此來判斷是啟動的某個Activity。

(2)onActivityResult()方法中的第二個參數就是SecondActivity傳回來的鍵,

第三個參數就是SecondActivity傳回來的鍵對應的值。

final int RESULT_CODE=101;

final int REQUEST_CODE=1;

public void enterSecond(View view) {

Intent intent=new Intent(this,SecondActivity.class);

startActivityForResult(intent, REQUEST_CODE);

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

Log.i(TAG, "onActivityResult"+"requestCode"+requestCode+"\n resultCode="+resultCode);

if(requestCode==REQUEST_CODE) {

if(resultCode==RESULT_CODE) {

String result=data.getStringExtra("second");

textView.setText(result);

}

}

super.onActivityResult(requestCode, resultCode, data);

}

2、SecondActivity 類中的代碼:

這個裏面的RESULT_CODE、intent分別跟上段代碼中onActivityResult()方法中的第二個、第三個參數相對應。

final int RESULT_CODE=101;

public void closeButton(View view) {

Intent intent=new Intent();

intent.putExtra("second", "I am second!");

setResult(RESULT_CODE, intent);

finish();

}

3、除此之外,onActivityResult()方法中的第二個參數resultCode還有系統自帶的壹些參數,也就是說,如果我們啟動的intent是隱式意圖,那麽可以用Activity類中RESULT_OK來表示操作已經順利結束。

例如,調用系統圖庫的返回,請看代碼:

final int CROP_PIC_REQUESTCODE = 23;

final int SELECT_PICTURE = 21;

if (resultCode == RESULT_OK && requestCode == SELECT_PICTURE) {

System.out.println("調用圖庫返回,關閉activity");

Intent intent1 = new Intent("com.android.camera.action.CROP");

intent1.setDataAndType(data.getData(), "image/*");

intent1.putExtra("crop", "true");

intent1.putExtra("aspectX", 1);

intent1.putExtra("aspectY", 1);

intent1.putExtra("outputX", 80);

intent1.putExtra("outputY", 80);

intent1.putExtra("return-data", true);

startActivityForResult(intent1, CROP_PIC_REQUESTCODE);

}

當然,我們還可以看下源碼中還有哪些類似RESULT_OK的。

/** Standard activity result: operation canceled. */

public static final int RESULT_CANCELED = 0;

/** Standard activity result: operation succeeded. */

public static final int RESULT_OK = -1;

/** Start of user-defined activity results. */

public static final int RESULT_FIRST_USER = 1;

總結:本來我只是想使用壹下顯示intent啟動Activity的方式,後來我又自己擴展了隱式intent啟動Activity。

總之,碰到問題,要多思考,不要拘泥在壹個點上,這樣自己才會真正的進步。

如果大家有什麽更好的建議和看法,壹定要提出來,互相切磋,***同進步是我們技術宅最大的願望啊,很高興和大家分享!

  • 上一篇:JAVA編程,計算公司不同員工工資。
  • 下一篇:如何將div的內容垂直居中?
  • copyright 2024編程學習大全網