Android活动未完成,也未启动上一个活动

时间:2015-09-01 16:53:25

标签: java android

我有2个活动,我称之为Map活动的主要活动,以及当应用程序启动Map活动时我调用了Question活动的第二个活动,然后单击播放按钮,并使用 StartActivityForResult启动问题活动(),然后当您正确回答问题时,应该销毁问题活动并再次创建,并检查正确答案问题的数量并更改布局。然后,如果你得分为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 }

为什么我这样做,是因为我想根据你的分数改变Map Activity的布局。

我做错了什么?

3 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我通过在Android Manifest中添加android:launchMode="singleTask"来解决它。希望它也适合你。

答案 1 :(得分:0)

我通过关闭Instant Run并重新运行我的代码解决了这个问题。

答案 2 :(得分:0)

您可以尝试以下代码:

我们需要将请求代码保留在全局和静态变量中,以便在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,然后你可以检查if (resultCode == RESULT_OK)onActivityResult方法中。您可以在下面找到该代码

的代码
 Intent intent = new Intent();
 setResult(activity.RESULT_OK, intent);
 finish();

希望这有用:)