**今天用華爲手機測試APP的時候遇到了這個問題。A activity 跳轉到B activity,並在B activity執行返回,Aactivity 執行回調代碼 **
//A activity 的跳轉
Intent intent = new Intent(A.this, B.class);
startActivityForResult(intent, Contacts.INDEX_TWO);
Log.e(TAG, "開始跳轉");
//A activity 的回調
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.e(TAG, "得到回調");
}
//B activity帶參數返回
Log.e(TAG, "帶參數返回");
Intent intent = getIntent();
Bundle data = new Bundle();
data.putString("regionId", node.getId() + "");
intent.putExtras(data);
B.this.setResult(RESPONSE_CODE, intent);
B.this.finish();
執行了上面的代碼,輸出的時候 得到的結果
12-24 07:20:35.508 13694-13694/com.example.waterdevice E/A: 開始跳轉
12-24 07:20:35.508 13694-13694/com.example.waterdevice E/A: 得到回調
打印的Log日誌,說明A activity啓動有返回值參數的Activiy的時候,就已經執行了回調的方法,所以就根本得不到我們想要的返回值。
後來在網上查詢了相關信息,最後查到的原因是我們在AndroidManifest.xml配置文件中 在Activity註冊上設置了一句代碼,這句代碼就是
android:launchMode=“singleTask”。
這個代碼導致2個activity都在村不同的棧裏面,在android中不同的棧之間不能進行數據通信。
所以在跳轉的activity(B activity)取消這句代碼就可以正常訪問了
寫該博客的作用,是留個備註,防止以後再次遇到該問題的時候,在此感謝CSDN的各位前輩的資料信息,讓我能解決這個問題