簡體   English   中英

一個活動不會將意圖發送給另一個活動

[英]One Activity does not send Intent to another Activity

我遇到了一個問題:第一個活動(如下)沒有向第二個活動發送意圖。

這是MainActivity.java

package com.example.quizjavatest;


import android.os.Bundle;
import android.app.Activity;
import java.util.List;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

public class MainActivity extends Activity  {

    List<Question> quesList;
    int score=0;
    int qid=0;
    ImageView quizimg; 
    Question currentQ;
    TextView txtQuestion;
    RadioButton rda, rdb, rdc;
    Button butNext;

@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
            DbHelper db=new DbHelper(this);
            quesList=db.getAllQuestions();
            currentQ=quesList.get(qid);

            txtQuestion=(TextView)findViewById(R.id.textView1); //question
            rda=(RadioButton)findViewById(R.id.radio0); //option A
            rdb=(RadioButton)findViewById(R.id.radio1); //option B
            rdc=(RadioButton)findViewById(R.id.radio2); //option C
            quizimg=(ImageView) findViewById(R.id.ImgQuiz); //img quiz
            butNext=(Button)findViewById(R.id.button1); //button next
            setQuestionView();


            butNext.setOnClickListener(new View.OnClickListener() {     
                @Override
                public void onClick(View v) {
                    RadioGroup grp=(RadioGroup)findViewById(R.id.radioGroup1);
                    RadioButton answer=(RadioButton)findViewById(grp.getCheckedRadioButtonId());
                    Log.d("yourans", currentQ.getANSWER()+" "+answer.getText());
                    if(currentQ.getANSWER().equals(answer.getText()))
                    {
                        score++;
                        Log.d("score", "Your score"+score);
                    }
                    if(qid<5){                  
                        currentQ=quesList.get(qid);
                        setQuestionView();
                    }else{
                        Intent intent = new Intent(getApplicationContext(), ResultActivity.class);
                        Bundle b = new Bundle();
                        b.putInt("score", score); //Your score
                        intent.putExtras(b); //Put your score to your next Intent
                        startActivity(intent);
                        finish();
                    }
                }
            });
}

        private void setQuestionView()
        {

            txtQuestion.setText(currentQ.getQUESTION());
            rda.setText(currentQ.getOPTA());
            rdb.setText(currentQ.getOPTB());
            rdc.setText(currentQ.getOPTC());
            quizimg.setImageBitmap(currentQ.getBitmap());
            qid++;
        }
}

ResultActivity.java

package com.example.quizjavatest;

import android.os.Bundle;
import android.app.Activity;

import android.widget.RatingBar;
import android.widget.TextView;

public class ResultActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_results);


        RatingBar bar=(RatingBar)findViewById(R.id.ratingBar1); 
        bar.setNumStars(5);
        bar.setStepSize(0.5f);
        //get text view
        TextView t=(TextView)findViewById(R.id.textResult);
        //get score
        Bundle b = getIntent().getExtras();
        int score= b.getInt("score");
        //display score
        bar.setRating(score);
        switch (score)
        {
        case 1:
        case 2: t.setText("Oopsie! Better Luck Next Time!");
        break;
        case 3:
        case 4:t.setText("Hmmmm.. Someone's been reading a lot of trivia");
        break;
        case 5:t.setText("Who are you? A trivia wizard???");
        break;
        }
    }
}

更改您的意圖:

Intent intent = new Intent(this, ResultActivity.class); //better use `this` instead of global context
intent.putExtras("score", score); //Put your score to your next 
startActivity(intent);
finish();

除非您要傳遞Object ,否則不需要使用BundleIntent的附加功能已經是Bundle了,不要Bundle兩次。

ResultActivity捕獲它:

Intent intent = getIntent();
int score = intent.getIntExtra("score");

希望這能解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM