Tôi có 2 Hoạt động, mỗi Hoạt động trong các ứng dụng riêng biệt. Activity1 có một nút người dùng có thể nhấp chuột phải và nó gọi là hoạt động thứ hai sử dụng một ý định trong onClick()
phương pháp của nó:Android onActivityResult được gọi là đầu tiên
Intent myIntent = getPackageManager().getLaunchIntentForPackage(com.myProject.Activity2);
startActivityForResult(myIntent, 600);
này sẽ khởi chạy một cách chính xác Activity2 từ Activity1, nhưng onActivityResult
được gọi trong Activity1 trước onCreate
được gọi trong Activity2, thay vì trong số onBackPressed()
nơi tôi thiết lập mục đích trả lại.
Dưới đây là phương pháp onCreate
cho Activity2:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
Dưới đây là phiên bản hiện tại của onBackPressed
phương pháp Activity2:
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("Stuff", someStuff);
if(getParent()==null){
setResult(Activity.RESULT_OK, intent);
}else{
getParent().setResult(Activity.RESULT_OK, intent);
}
finish();
super.onBackPressed();
}
My AndroidManifest.xml có bộ lọc ý định sau đây cho Activity2:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
Tôi đã xác minh rằng số 012 của tôilà standard
(và không phải singleTask
, v.v.) như được thông báo here và mã yêu cầu của tôi không âm như được cảnh báo here. Tôi cũng đã thử android:launchMode="singleTop"
, nhưng đó cũng là một sự cố.
Tôi cũng đã cố gắng không gọi finish()
trong onBackPressed()
cho Activity2 như đã đề cập here (cũng chỉ với super.onBackPressed()
như đề xuất here) và một lần nữa kêu gọi nó như đề xuất here.
Ngoài ra, tôi đã thử nhận xét dòng intent.putExtra("Stuff", someStuff);
vì dường như gây ra sự cố cho this person.
Bất kỳ ý tưởng nào về những gì tôi có thể đang làm sai?
Cảm ơn bạn rất nhiều vì đã quay lại và đăng giải pháp của bạn. Tôi đã bị mắc kẹt về vấn đề này trong một thời gian dài và tôi cũng đã thử tất cả các giải pháp mà bạn gặp phải trong câu hỏi của bạn không có kết quả. Điều này cố định nó và làm cho ngày của tôi một heck tốt hơn rất nhiều =) –
Tôi sử dụng startActivityForResult WITHOUT setClassName hoặc tên đủ điều kiện trên tất cả các dự án của tôi và tất cả chúng hoạt động hoàn hảo ngoại trừ một trường hợp. Vì vậy, tôi đã thử giải pháp của bạn trong trường hợp đó và nó không tạo ra bất kỳ sự khác biệt nào. – user316117
2h !! Cảm ơn bạn vì vậy mutch cho các giải pháp – Anthone