0

在 B 重新启动后,我在从活动 A->B->A 出发时遇到了一些麻烦。如何在 B 完成后重新启动活动 B 而不会弄乱如何将意图返回给 A?

使用以下代码从 A 调用 B:

    public void activityFunction(Context gameContext){
    //This function was made to pass the player class back and forth between 

    setContentView(R.layout.loadingscreen);
    Intent i = new Intent(gameContext, gamePanel.class);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivityForResult(i,1);
    }

使用以下代码重置 B 游戏活动:

        setContentView(R.layout.loadingscreen);
        Intent i = getIntent();
        finish();
        startActivity(i);

B 使用以下代码完成并返回 A:

    public void levelOver(){
        setContentView(R.layout.loadingscreen);
        Intent resultIntent = new Intent();
        resultHolder results = new resultHolder(playerStats);
        resultIntent.putExtra(.......);
        resultIntent.putExtra(.......);
        resultIntent.putExtra(.......);
        resultIntent.putExtra(.......);
        setResult(Activity.RESULT_OK, resultIntent);
        finish();
        }

这是在 A 中调用 onActivity 的地方

protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch(requestCode) {
    case (1) : {
         if (resultCode == Activity.RESULT_OK) {
         returnedWithResults = true;
         new AsyncReturnGameData().execute(data);
      }
      break;
    } 
  }
}

只要不重新启动,活动 B 100% 的时间返回。当它重新启动时,它会返回一个错误。任何为我指明正确方向的帮助将不胜感激。谢谢!

4

1 回答 1

0

尝试改变这一点:

 setContentView(R.layout.loadingscreen);
        Intent i = getIntent();
        finish();
        startActivity(i);

对此:

 setContentView(R.layout.loadingscreen);
    Intent i = getIntent();       
    startActivity(i);
    finish();
于 2012-09-05T22:58:48.463 回答