2016-09-15 16 views
2

我正在开发一个数学测验应用程序。它由9个级别组成,每个级别由10个问题组成,这些问题会从数组中生成随机操作数。在特定级别上,它会生成随机操作数,我必须将这些操作数传递到另一个级别。例如:如果1级第一输入是随机4和3,则2级1输入应该是3和4,同样它应该将所有10个设置操作数传递到另一个级别。我与此共享代码。如何将多个生成的值传递到另一个活动作为输入

public class levelFour extends AppCompatActivity implements View.OnClickListener { 

    int qid = 0,score=0; 
    private int answer=0,operand1=0,operand2=0; 
    private int[] level4op1={0,1,2,3,4,5,6,7,8,9}; 
    private int[] level4op2={0,1,2,3,4,5,10}; 
    private Random random; 

    private int enteredInput = 0; 

    //Declare ui elements 
    private TextView question, answerTxt, responseTxt, timeTxt; 
    private ImageView response; 
    private Button btn_one, btn_two, btn_three, btn_four, btn_five, btn_six, btn_seven, btn_eight, btn_nine, btn_zero, 
      btn_clr; 

    private long startTime = 0L; 
    private Handler customHandler = new Handler(); 
    long timeInMilliseconds = 0L; 
    long timeSwapBuff = 0L; 
    long updatedTime = 0L; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mainpage); 
     Log.e("tag","correct : "); 

     // Get input from Text View 
     question = (TextView)findViewById(R.id.question); 
     answerTxt = (TextView)findViewById(R.id.answer); 
     response = (ImageView)findViewById(R.id.response); 
     responseTxt = (TextView)findViewById(R.id.responseTxt); 
     timeTxt=(TextView) findViewById(R.id.timeTxt); 

     // to hide the response 
     response.setVisibility(View.INVISIBLE); 

     //Get input from Buttons 

     btn_one = (Button)findViewById(R.id.btn_one); 
     btn_two = (Button)findViewById(R.id.btn_two); 
     btn_three = (Button)findViewById(R.id.btn_three); 
     btn_four = (Button)findViewById(R.id.btn_four); 
     btn_five = (Button)findViewById(R.id.btn_five); 
     btn_six = (Button)findViewById(R.id.btn_six); 
     btn_seven = (Button)findViewById(R.id.btn_seven); 
     btn_eight = (Button)findViewById(R.id.btn_eight); 
     btn_nine = (Button)findViewById(R.id.btn_nine); 
     btn_zero = (Button)findViewById(R.id.btn_zero); 
     btn_clr = (Button)findViewById(R.id.btn_clr); 

     //onclick functions 

     btn_one.setOnClickListener(this); 
     btn_two.setOnClickListener(this); 
     btn_three.setOnClickListener(this); 
     btn_four.setOnClickListener(this); 
     btn_five.setOnClickListener(this); 
     btn_six.setOnClickListener(this); 
     btn_seven.setOnClickListener(this); 
     btn_eight.setOnClickListener(this); 
     btn_nine.setOnClickListener(this); 
     btn_zero.setOnClickListener(this); 
     btn_clr.setOnClickListener(this); 

     random= new Random(); 
     //To randomly generate questions 
     selectQuestion(); 
     startTime = SystemClock.uptimeMillis(); 
     customHandler.postDelayed(updateTimerThread, 0); 
    } 

    private void selectQuestion() { 
     enteredInput = 0; 
     answerTxt.setText("?"); 
     //get random operand 
     operand1=getOperand1(); 
     operand2=getOperand2(); 
     //show question 
     question.setText(operand1 + " * " + operand2); 
     answer=operand1*operand2; 
     qid++; 
     Log.e("tag","qid : " + qid); 
    } 

    private int getOperand1() { 
     operand1=random.nextInt(level4op1.length); 
     return operand1; 


    } 
    private int getOperand2() { 
     operand2=random.nextInt(level4op2.length); 
     return operand2; 
    } 

    private Runnable updateTimerThread = new Runnable() { 

     public void run() { 

      timeInMilliseconds = SystemClock.uptimeMillis() - startTime; 

      updatedTime = timeSwapBuff + timeInMilliseconds; 

      int secs = (int) (updatedTime/1000); 
      int mins = secs/60; 
      secs = secs % 60; 
      int milliseconds = (int) (updatedTime % 1000); 
      timeTxt.setText("" + mins + ":" 
        + String.format("%02d", secs)); 
      customHandler.postDelayed(this, 0); 
     } 

    }; 

    @Override 
    public void onClick(View view) { 

     if (view.getId() == R.id.btn_one || view.getId() == R.id.btn_two 
       || view.getId() == R.id.btn_three || view.getId() == R.id.btn_four 
       || view.getId() == R.id.btn_five || view.getId() == R.id.btn_six 
       || view.getId() == R.id.btn_seven || view.getId() == R.id.btn_eight 
       || view.getId() == R.id.btn_nine || view.getId() == R.id.btn_zero) { 

      //final MediaPlayer correctMP=MediaPlayer.create(this,R.raw.correct); 
      //final MediaPlayer wrongMP=MediaPlayer.create(this,R.raw.wrong); 

      Spannable word = new SpannableString("Correct"); 
      word.setSpan(new ForegroundColorSpan(Color.GREEN), 0, word.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

      Spannable wordTwo = new SpannableString("Wrong"); 
      wordTwo.setSpan(new ForegroundColorSpan(Color.RED), 0, wordTwo.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

      if (answer <= 9) { 
       Log.e("tag","ans : " + answer); 
       //get number from tag 
       int enteredNum = Integer.parseInt(view.getTag().toString()); 
       if (answerTxt.getText().toString().endsWith("?")) 
        answerTxt.setText("" + enteredNum); 
       if (enteredNum == answer) { 
        //  correctMP.start(); 
        score++; 
        Log.e("tag","score : " + score); 
        response.setImageResource(R.drawable.tick); 
        response.setVisibility(View.VISIBLE); 
        responseTxt.setText(word); 
       } else { 
        // wrongMP.start(); 
        Log.e("tag","score : " + score); 
        response.setImageResource(R.drawable.cross); 
        response.setVisibility(View.VISIBLE); 
        responseTxt.setText(wordTwo); 
       } 
       if(qid < 10){ 
        selectQuestion(); 
       } 
       else { 
        Intent intent=new Intent(levelFour.this,last.class); 
        Bundle b= new Bundle(); 
        b.putInt("score",score); 
        intent.putExtras(b); 
        startActivity(intent); 
       } 
      } 
      else if (answer > 9) { 
       Log.e("tag","ans : " + answer); 
       int enteredNum = Integer.parseInt(view.getTag().toString()); 
       enteredInput = enteredInput * 10 + enteredNum; 
       answerTxt.setText("" + enteredInput); 
       Log.e("tag","enteredInput : " + enteredInput); 
       if (enteredInput == answer) { 
        Log.e("tag","correct : "); 
        // correctMP.start(); 
        score++; 
        Log.e("tag","score : " + score); 
        response.setImageResource(R.drawable.tick); 
        response.setVisibility(View.VISIBLE); 
        responseTxt.setText(word); 
        if(qid < 10){ 
         selectQuestion(); 
        } 
        else { 
         Intent intent=new Intent(levelFour.this,last.class); 
         Bundle b= new Bundle(); 
         b.putInt("score",score); 
         intent.putExtras(b); 
         startActivity(intent); 
        } 
       } 
       else if (enteredInput > 9) { 
        Log.e("tag","wrong : "); 
        //wrongMP.start(); 
        Log.e("tag","score : " + score); 
        response.setImageResource(R.drawable.cross); 
        response.setVisibility(View.VISIBLE); 
        responseTxt.setText(wordTwo); 
        if(qid < 10){ 
         selectQuestion(); 
        } 
        else { 
         Intent intent=new Intent(levelFour.this,last.class); 
         Bundle b= new Bundle(); 
         b.putInt("score",score); 
         intent.putExtras(b); 
         startActivity(intent); 
        } 
       } 
      } 
     } 
     else if (view.getId() == R.id.btn_clr) 
     { 
      answerTxt.setText("?"); 
      enteredInput=0; 
     } 
    } 
} 

这是对10个问题产生的随机值一层,我想用其在另一级随机生成的问题的顺序相同。 例如:

Level 1 input 1: 4 and 3 input 2: 2 and 3 (generates randomly) 
    Level 2 input 1: 3 and 4 input 2: 3 and 2 (from level 1 input) 

回答

0

你应该用你控制的滑动和数据保存到活动水平viewpager。比有10个不同的活动更容易。

相关问题