2017-04-03 32 views
0

我是android新手。我试图做一个测验应用程序,它有类别(历史,体育...)。如何在点击按钮时将int值传递给另一个?

数据库中只有一个表有60个问题。前10个问题来自第一类(历史),第二个问题来自第二类(体育),等等。我想要点击第一类只有前10个问题会被提取,点击第二类只会提取10到20个问题。我们可以通过onclick()中的意图解决这个问题,通过意图传递一些价值,如果还有其他问题用于限制问题?

QuestionActivity.java

public class QuestionActivity extends Activity { 
List<Question> quesList; 
int score = 0; 
Random r = new Random(); 
int qid= (r.nextInt(60) + 0); 

Question currentQ; 
TextView txtQuestion, times, scored; 
Button button1, button2, button3; 
CounterClass timer; 

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

    QuizHelper db = new QuizHelper(this); // my question bank class 
    quesList = db.getAllQuestions(); // this will fetch all quetonall 
    questions 
    currentQ = quesList.get(qid); // the current question 

    txtQuestion = (TextView) findViewById(R.id.txtQuestion); 
    // the textview in which the question will be displayed 

    // the three buttons, 
    // the idea is to set the text of three buttons with the options from 
    question bank 
    button1 = (Button) findViewById(R.id.button1); 
    button2 = (Button) findViewById(R.id.button2); 
    button3 = (Button) findViewById(R.id.button3); 

    // the textview in which score will be displayed 
    scored = (TextView) findViewById(R.id.score); 

    // the timer 
    times = (TextView) findViewById(R.id.timers); 


    // method which will set the things up for our game 
    setQuestionView(); 
    times.setText("00:00:30"); 

    // A timer of 30 seconds to play for, with an interval of 1 second 
    (1000 milliseconds) 
    timer = new CounterClass(30000, 1000); 
    timer.start(); 

    // button click listeners 
    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      // passing the button text to other method 
      // to check whether the anser is correct or not 
      // same for all three buttons 
      getAnswer(button1.getText().toString()); 
     } 
    }); 

    button2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      getAnswer(button2.getText().toString()); 
     } 
    }); 

    button3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      getAnswer(button3.getText().toString()); 
     } 
    }); 
} 

public void getAnswer(String AnswerString) { 
    if (currentQ.getANSWER().equals(AnswerString)) { 

     // if conditions matches increase the int (score) by 1 
     // and set the text of the score view 
     score++; 
     scored.setText("Score : "+ score); 

    } 
    else { 

     // if unlucky start activity and finish the game 
    timer.cancel(); 
     Intent intent = new Intent(QuestionActivity.this, 
       ResultActivity.class); 
     // passing the int value 
     Bundle b = new Bundle(); 
     b.putInt("score", score); // Your score 
     intent.putExtras(b); // Put your score to your next 
     startActivity(intent); 
     finish(); 
    } 

    if (qid < 60) { 

     // if questions are not over then do this 
     currentQ = quesList.get(qid); 
     setQuestionView(); 
    } else { 
     // if over do this 
     timer.cancel(); 
     Intent intent = new Intent(QuestionActivity.this, 
       ResultActivity.class); 
     Bundle b = new Bundle(); 
     b.putInt("score", score); // Your score 
     intent.putExtras(b); // Put your score to your next 
     startActivity(intent); 
     finish(); 
    } 


} 


@TargetApi(Build.VERSION_CODES.GINGERBREAD) 
@SuppressLint("NewApi") 
public class CounterClass extends CountDownTimer { 

    public CounterClass(long millisInFuture, long countDownInterval) { 
     super(millisInFuture, countDownInterval); 
     // TODO Auto-generated constructor stub 
    } 


    @Override 
    public void onFinish() { 
     times.setText("Time is up"); 
     Intent intent = new Intent(QuestionActivity.this, 
       ResultActivity.class); 
     timer.cancel(); 
     Bundle b = new Bundle(); 
     b.putInt("score", score); // Your score 
     intent.putExtras(b); // Put your score to your next 
     startActivity(intent); 
     finish(); 

    } 

    @Override 
    public void onTick(long millisUntilFinished) { 
     // TODO Auto-generated method stub 

     long millis = millisUntilFinished; 
     String hms = String.format(
       "%02d:%02d:%02d", 
       TimeUnit.MILLISECONDS.toHours(millis), 
       TimeUnit.MILLISECONDS.toMinutes(millis) 
         - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS 
         .toHours(millis)), 
       TimeUnit.MILLISECONDS.toSeconds(millis) 
         - 
     TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS 
         .toMinutes(millis))); 
     System.out.println(hms); 
     times.setText(hms); 
    } 


} 

private void setQuestionView() { 

    // the method which will put all things together 
    txtQuestion.setText(currentQ.getQUESTION()); 
    button1.setText(currentQ.getOPTA()); 
    button2.setText(currentQ.getOPTB()); 
    button3.setText(currentQ.getOPTC()); 
    qid= (r.nextInt(60) + 0); 

    } 


    } 

Home.java

public class Home extends Activity { 
Button play,about,help,quit; 
ImageView img; 
@Override 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.home); 
    play=(Button)findViewById(R.id.play); 
    about=(Button)findViewById(R.id.about); 
    quit=(Button)findViewById(R.id.quit); 
    help=(Button)findViewById(R.id.help); 

    play.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      Intent intent=new Intent(getApplicationContext(),QuestionActivity.class); 
      startActivity(intent); 
      finish(); 
     } 
    }); 
    quit.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 
    about.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent=new Intent(getApplicationContext(),about.class); 
      startActivity(intent); 
     } 
    }); 
    help.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent=new Intent(getApplicationContext(),help.class); 
      startActivity(intent); 
     } 
    }); 

} 

}

+0

当您基于点击按钮启动QuestionActivity时,您希望为您的意图设置一个int额外值?您可以请将问题发布到QuestionActivity的地方吗? –

+0

我添加了一个名为questionactivity的java文件。 –

+0

[我如何在Android应用程序中的活动之间传递数据?](http://stackoverflow.com/questions/2091465/how-do-i-pass-data-between-activities-in-android-application) –

回答

0

在创建一个Intent对象,但你叫startActivity(intent);使用前:intent.putExtra("name",123);当你想在另一个活动中获得整数两者均简单地使用:int foo = getIntent().getIntExtra("name");

0

在活动中,你计算出int价值,你想转到其他Activity

int magicVariable = 100; 
Intent intent = new Intent(this, OtherClassToGo.class); 
intent.putExtra("EXTRA_VALUE_KEY", magicVariable); 
startActivity(intent); 

OtherClassToGoonCreate()方法:

Intent intent = getIntent(); 
int magicVariableFromOtherClass = intent.getIntExtra("EXTRA_VALUE_KEY"); 

当然,对于"EXTRA_VALUE_KEY",您可以使用公共静态变量,以便“记住”它。

相关问题