onActivityResult工作不正常 [英] onActivityResult not working properly

查看:152
本文介绍了onActivityResult工作不正常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我有这样的问答游戏,我有一大堆的弹出式屏幕(对错误的答案,游戏结束时,时间的上升等)。我的游戏有15水平,问题,不同的时间等各个层次不同的数字。我想,当我完成1级为例,present弹出一些信息,当用户单击OK,我想加载一个新的水平。我所做的一切,除了东西是搞砸在onActivityResult方法,它总是加载最后一种情况。这是我的code:

So, I have this quiz game and I have bunch of popup screens (for wrong answer, for game end, for time's up and so on). My game has 15 level, each level different number of question, different time and so on. I want when I finish level 1 for example, to present popup with some info, and when a user clicks OK, I want to load next level. I did all that, except something is messed up in onActivityResult method, it always loads last case. Here's my code:

static final int MY_REQUEST = 0;

Intent i = new Intent(this, Popup_nivoi.class);
            nivo++;
            nivoKraj++;
            switch(nivo) 
            {
                case 2:
                {
                    brojPitanja = 11;
                    greska = 4;
                    mogucnostPreskakanjaPitanja = 2;
                    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 15:
                {
                    brojPitanja = 23;
                    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:
                {
                    Intent iFinale = new Intent(this, Finale.class);
                    startActivityForResult(iFinale, 6);
                    break;
                }
            }
            cancelAllTimers();
            startActivityForResult(i, MY_REQUEST);

这是我做的弹出类,就OK按钮pressed:

This is what I do in Popup class, on OK button pressed:

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

而这正是它开始变得奇怪,早在我的游戏类(MY_REQUEST的第一件事情是错误的答案弹出):

And this is where it starts to get weird, back in my game class (the first thing with MY_REQUEST is for wrong answer popup):

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == MY_REQUEST)
        {
            if(resultCode == RESULT_OK)
            {
                nextQuestion();
            }
        }
        else
        {
            switch(requestCode) 
            {
                case 0:
                    if(resultCode == RESULT_OK) 
                    {
                        nextQuestion();
                        timer.start();
                        break;
                    }
                case 1:
                    if(resultCode == RESULT_OK) 
                    {
                        nextQuestion();
                        timer1.start();
                        break;
                    }           
                case 2:
                    if(resultCode == RESULT_OK) 
                    {
                        nextQuestion();
                        timer2.start();
                        break;
                    }
                case 3:
                    if(resultCode == RESULT_OK) 
                    {
                        nextQuestion();
                        timer3.start();
                        break;
                    }
           }
       }
   }

我不明白为什么,但它总是去区分3。

I don't get it why, but it's always goes to case 3.

推荐答案

您忘了休息statments这就是为什么控制涉及到最后的case语句每次,您可以通过将它解决这一问题。

You forgot to put break statments thats why control comes to the last case statement everytime, you can fix this by adding it

switch(requestCode) {
            case 0:
                if(resultCode == RESULT_OK) {

                    nextQuestion();
                    timer.start();

            }
            break;
            case 1:
                if(resultCode == RESULT_OK) {
                    nextQuestion();
                    timer1.start();

           }   
            break;       
            case 2:
                if(resultCode == RESULT_OK) {
                nextQuestion();
                timer2.start();

           }
           break;
            case 3:
                if(resultCode == RESULT_OK) {
                nextQuestion();
                timer3.start();
          }
 }

这篇关于onActivityResult工作不正常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆