Java startActivityForResult未正确发送额外内容

Java startActivityForResult未正确发送额外内容,java,android,Java,Android,我有一个15级的问答游戏。在每个关卡之后,我会弹出一个包含一些信息的窗口(游戏关卡和一些关卡规则)。在15级之后,会出现一个最终弹出窗口,显示用户赢得多少分的信息。我使用startActivityForResult打开弹出窗口并发送一些附加信息,它工作正常,直到最后一个弹出窗口。在最后一场比赛之后,它应该打开带有总比分的最终弹出窗口。但它做得不好。它在“我的级别”弹出窗口中打开,但所有信息都用零填充。我不知道它是从哪里来的。在我按下OK之后,它会打开最后一个弹出窗口,但我得到的不是总分,而是0。

我有一个15级的问答游戏。在每个关卡之后,我会弹出一个包含一些信息的窗口(游戏关卡和一些关卡规则)。在15级之后,会出现一个最终弹出窗口,显示用户赢得多少分的信息。我使用startActivityForResult打开弹出窗口并发送一些附加信息,它工作正常,直到最后一个弹出窗口。在最后一场比赛之后,它应该打开带有总比分的最终弹出窗口。但它做得不好。它在“我的级别”弹出窗口中打开,但所有信息都用零填充。我不知道它是从哪里来的。在我按下OK之后,它会打开最后一个弹出窗口,但我得到的不是总分,而是0。代码如下:

Intent i = new Intent(this, Popup_nivoi.class);
            nivo++;
            REQUEST++;
            switch(nivo) {
                case 2:
                {
                    brojPitanja = 11;
                    greska = 4;
                    mogucnostPreskakanjaPitanja = 3;
                    i.putExtra("brojPitanja", brojPitanja);
                    i.putExtra("vreme", 100);
                    i.putExtra("pravoNaGreske", greska);
                    i.putExtra("nivo", nivo);
                    i.putExtra("mogucnostPreskakanja", mogucnostPreskakanjaPitanja);
                    break;
                }
                case 3:
                {
                    brojPitanja = 12;
                    greska = 4;
                    mogucnostPreskakanjaPitanja = 2;
                    i.putExtra("brojPitanja", brojPitanja);
                    i.putExtra("vreme", 95);
                    i.putExtra("pravoNaGreske", greska);
                    i.putExtra("nivo", nivo);
                    i.putExtra("mogucnostPreskakanja", mogucnostPreskakanjaPitanja);
                    break;
                }
                case 4:
                {
                    brojPitanja = 13;
                    greska = 3;
                    mogucnostPreskakanjaPitanja = 2;
                    i.putExtra("brojPitanja", brojPitanja);
                    i.putExtra("vreme", 90);
                    i.putExtra("pravoNaGreske", greska);
                    i.putExtra("nivo", nivo);
                    i.putExtra("mogucnostPreskakanja", mogucnostPreskakanjaPitanja);
                    break;
                }
                case 5:
                {
                    brojPitanja = 14;
                    greska = 3;
                    mogucnostPreskakanjaPitanja = 2;
                    i.putExtra("brojPitanja", brojPitanja);
                    i.putExtra("vreme", 85);
                    i.putExtra("pravoNaGreske", greska);
                    i.putExtra("nivo", nivo);
                    i.putExtra("mogucnostPreskakanja", mogucnostPreskakanjaPitanja);
                    break;
                }
.
.
.
.
case 15:
            {
                brojPitanja = 24;
                greska = 0;
                mogucnostPreskakanjaPitanja = 0;
                i.putExtra("brojPitanja", brojPitanja);
                i.putExtra("vreme", 35);
                i.putExtra("pravoNaGreske", greska);
                i.putExtra("nivo", nivo);
                i.putExtra("mogucnostPreskakanja", mogucnostPreskakanjaPitanja);
                break;
            }
            case 16:
            {
                brojPitanja = 25;
                greska = 0;
                mogucnostPreskakanjaPitanja = 0;
                i.putExtra("brojPitanja", brojPitanja);
                i.putExtra("vreme", 30);
                i.putExtra("pravoNaGreske", greska);
                i.putExtra("nivo", nivo);
                i.putExtra("mogucnostPreskakanja", mogucnostPreskakanjaPitanja);
                break;
            }
            case 17:
            {
                Intent iFinale = new Intent(Kviz.this, Finale.class);
                iFinale.putExtra("UkupanSkor", brojacTacnihOdgovora);
                startActivityForResult(iFinale, 0);
                finish();
                break;
            }
        }
        cancelAllTimers();
        startActivityForResult(i, REQUEST);
    }
在我的水平弹出窗口中,我这样做是为了获得额外的:

Bundle extras = getIntent().getExtras();
        if(extras != null) {
            brojPitanja = getIntent().getIntExtra("brojPitanja", 0);
            pravoNaGreske = getIntent().getIntExtra("pravoNaGreske", 0);
            mogucnostPreskakanja = getIntent().getIntExtra("mogucnostPreskakanja", 0);
            vreme = getIntent().getIntExtra("vreme", 0);
            nivo = getIntent().getIntExtra("nivo", 0);
        }
还有我的最后一节课:

public class Finale  extends Activity implements OnClickListener{


      TextView cestitamo,ukupanSkor;
      Button ok;
      int brojOdgovora;


    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.finale);

        if (getIntent().getExtras() != null)
            brojOdgovora = getIntent().getIntExtra("brojTacnihOdgovora", 0);

        inicijalizujVarijable();
    }

    private void inicijalizujVarijable()
      {
        Typeface localTypeface = Typeface.createFromAsset(getAssets(), "crazy_moj_3.ttf");
        cestitamo = (TextView) findViewById(R.id.tvCestitamo);
        cestitamo.setTypeface(localTypeface);
        ukupanSkor =(TextView) findViewById(R.id.tvUkupanSkor);
        ukupanSkor.setTypeface(localTypeface);
        ok = (Button) findViewById(R.id.bOKCestitamo);

        ukupanSkor.setText("You answered correctly on " + brojOdgovora + " of 300 questions!");

        ok.setOnClickListener(new View.OnClickListener()
        {
          public void onClick(View paramAnonymousView)
          {
            Intent localIntent = new Intent();
            setResult(RESULT_OK, localIntent);
            finish();
          }
        });
      }


    public void onClick(View v) {
        // TODO Auto-generated method stub

    }

}
奇怪的是,我有一个“时间到了”的弹出窗口,我使用相同的例程和相同的代码发送额外信息,并显示用户得分多少,效果很好

它会打开我的一个关卡弹出窗口,但所有信息都用零填充

发生这种情况是因为您将
startActivityForResult(i,REQUEST)
放在
开关盒
之外。当
nova
为17时,
Intent i
不会使用任何附加值初始化,无论处于哪个阶段,它都将始终被调用。因此,弹出窗口出现,所有值均为0(从您设置的默认值)

在我按下OK之后,它会打开最后一个弹出窗口,但我得到的不是总分,而是0

这是因为您的
附加文件使用了不同的名称。初始化
Intent iFinale
时,使用
UkupanSkor
进行总分。但在最终活动中,您使用的是
brojTacnihOdgovora


我的建议是使用相同的
Intent
开始活动,并根据阶段编号设置数据。您只需更改案例17即可。尝试:

case 17:
{
    REQUEST = 0; // set the request code to 0
    i = new Intent(Kviz.this, Finale.class); // set the intent to open final popup instead
    i.putExtra("brojTacnihOdgovora", brojacTacnihOdgovora); // set the extra name to match with the activity
    finish();
    break;
}

我想这是他们的延续,所以我相信你已经将他们的答案合并在一起了,你在这里发布的代码是最新的。另外,由于我看不到最后阶段的案例(
case 16
,Finale?),您似乎错误地复制粘贴了弹出窗口的代码
Intent
,因此请先添加
case 15
case 16
。这是最新的代码。我粘贴错了,你注意到了。我编辑了我的帖子,现在很好。重复了这么多代码!我建议您学习结构化编程技术,如方法和数组。