繁体   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