簡體   English   中英

Android活動未完成,因此無法啟動之前的活動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM