gpt4 book ai didi

java - startActivityForResult 未正确发送额外内容

转载 作者:行者123 更新时间:2023-12-02 05:53:57 27 4
gpt4 key购买 nike

我有一个有 15 个级别的问答游戏。在每个级别之后,我都会显示一个弹出窗口,其中包含一些信息(游戏级别和一些级别规则)。 15 级后,会出现一个最终弹出窗口,其中包含用户赢得了多少积分的信息。我使用 startActivityForResult 打开弹出窗口并发送一些额外内容,它工作正常,直到最后一个弹出窗口。最后一场比赛结束后,它应该打开带有总得分的最终弹出窗口。但它做得不好。它在我的关卡弹出窗口中打开,但所有信息都用零填充。我不知道它从哪里来。按“确定”后,它会打开最终弹出窗口,但我得到的不是总分,而是 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

}

}

奇怪的是,我有一个“时间到了”的弹出窗口,我使用相同的例程和相同的代码来发送额外内容并显示用户得分了多少分,并且工作正常。

最佳答案

It opens one of my level popup, but with all the info filled with zeros.

出现这种情况是因为您将 startActivityForResult(i, REQUEST) 放在 switch-case 之外。当nova为17时,Intent i没有用任何额外的东西初始化,并且无论在哪个阶段它都会被调用。因此,弹出窗口中的所有值均为 0(来自您设置的默认值)。

After I press OK, it opens final popup, but instead of overall score, I get 0.

这是因为您为 extras 使用了不同的名称。初始化 Intent iFinale 时,您可以使用 UkupanSkor 来获得总分。但在 Finale Activity 中,您可以使用 brojTacnihOdgovora 来代替。

<小时/>

我的建议是使用相同的Intent来启动 Activity ,并根据阶段编号设置数据。您只需更改case 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;
}

关于java - startActivityForResult 未正确发送额外内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23281947/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com