[英]Android activity does not finish and does not launch previous activity
我有2個活動,主要活動是我稱為Map活動,第二個活動是我在應用程序啟動Map活動時稱為Question活動,然后單擊播放按鈕,然后使用StartActivityForResult()啟動Question活動,然后已回答正確的問題,應銷毀並再次創建Question活動,並檢查正確回答的問題數並更改布局。 那么如果您的得分為5,則應該銷毀“問題”活動,並顯示“地圖”活動,但這不會發生。 這是我的代碼
Map.class
public void OnClick_Question(View v){
Intent i = new Intent(MapActivity.this, QuestionActivity.class);
startActivityForResult(i, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(SharedPrefs.TAG, "OnActivityResult Entry");
if (resultCode == RESULT_OK) {
Log.d(SharedPrefs.TAG, "MAPActivity OnActivityResult Entry resultCode");
AssignContentView(requestCode);
}
}
Question.class
public void Next() {
Intent i = new Intent(this, QuestionActivity.class);
startActivity(i);
finish();
}
public void LevelUp() {
Log.e(SharedPrefs.TAG, "LevelUp");
super.finish();
finish(); /*This don't happen*/
}
當我看到LogCat向我顯示此消息時:
09-01 11:23:03.911 901-1485/? W/ActivityManager﹕ startActivity called from finishing ActivityRecord{43386100 u0 com.example.gbb/.QuestionActivity t50 f}; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { cmp=com.example.gbb/.QuestionActivity }
之所以這樣做,是因為我想根據您的得分來更改“地圖活動”的布局。
我做錯了什么?
我有同樣的問題。 我通過在Android清單中添加android:launchMode="singleTask"
了該問題。 希望它也對您有用。
我通過關閉“即時運行”並重新運行代碼來解決了這一問題。
您可以嘗試以下代碼:
我們需要將請求代碼保留在全局變量和靜態變量中,以便在onActivityResult
方法中進行訪問
private static final int REQUEST_CODE = 111;
public void OnClick_Question(View v){
Intent i = new Intent(MapActivity.this, QuestionActivity.class);
startActivityForResult(i, REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
Log.d(SharedPrefs.TAG, "OnActivityResult Entry");
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_CODE:
Log.d(SharedPrefs.TAG, "MAPActivity OnActivityResult Entry resultCode");
AssignContentView(requestCode);
break;
default:
break;
}
}
}
我認為您的Map
類沒有問題,問題出在第二類中。即,您需要以該意圖設置RESULT_OK
,然后可以在onActivityResult
方法中檢查if (resultCode == RESULT_OK)
。 您可以在下面找到該代碼
Intent intent = new Intent();
setResult(activity.RESULT_OK, intent);
finish();
希望這會有所幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.