2014-12-23 2 views
0

숫자가 텍스트 인 응용 프로그램의 단추가 있습니다. 버튼을 일정한 순서로 누르면 버튼의 숫자가 바뀌고 버튼이 다시 눌러지며 숫자가 바뀌면서 사이클이 계속됩니다. 이것은 처음으로 작동하지만 숫자가 바뀌면 눌려지는 것이 아무 것도 아닌 것처럼 보입니다.단추가 Android에서 응답하지 않습니다.

public class MainActivity extends Activity { 

int b1 = (int) (Math.random() * 100.0); 
int b2 = (int) (Math.random() * 100.0); 
int b3 = (int) (Math.random() * 100.0); 
int b4 = (int) (Math.random() * 100.0); 
int last = 0; 
int[] nums = { b1, b2, b3, b4 }; 
int i = 0; 
String res = ""; 

Button button1, button2, button3, button4; 

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

    button1 = (Button) findViewById(R.id.button1); 
    button2 = (Button) findViewById(R.id.button2); 
    button3 = (Button) findViewById(R.id.button3); 
    button4 = (Button) findViewById(R.id.button4); 

    button1.setText(Integer.toString(b1)); 
    button2.setText(Integer.toString(b2)); 
    button3.setText(Integer.toString(b3)); 
    button4.setText(Integer.toString(b4)); 

    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int value = b1; 
      checkOrder(value); 
      TextView result = (TextView) findViewById(R.id.textView1); 
      result.setText(res); 
     } 
    }); 

    button2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int value = b2; 
      checkOrder(value); 
      TextView result = (TextView) findViewById(R.id.textView1); 
      result.setText(res); 
     } 
    }); 

    button3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int value = b3; 
      checkOrder(value); 
      TextView result = (TextView) findViewById(R.id.textView1); 
      result.setText(res); 
     } 
    }); 

    button4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int value = b4; 
      checkOrder(value); 
      TextView result = (TextView) findViewById(R.id.textView1); 
      result.setText(res); 

     } 
    }); 

} 

private void checkOrder(int value) { 
    if (value == nums[i]) { 
     if (i == 3) { 
      button1.setBackgroundResource(android.R.drawable.btn_default); 
      button2.setBackgroundResource(android.R.drawable.btn_default); 
      button3.setBackgroundResource(android.R.drawable.btn_default); 
      button4.setBackgroundResource(android.R.drawable.btn_default); 
      b1 = (int) (Math.random() * 100.0); 
      b2 = (int) (Math.random() * 100.0); 
      b3 = (int) (Math.random() * 100.0); 
      b4 = (int) (Math.random() * 100.0); 
      button1.setText(Integer.toString(b1)); 
      button2.setText(Integer.toString(b2)); 
      button3.setText(Integer.toString(b3)); 
      button4.setText(Integer.toString(b4)); 
      i = 0; 

     } else { 
      if (value == b1) { 
       button1.setBackgroundColor(Color.GREEN); 
      } else if (value == b2) { 
       button2.setBackgroundColor(Color.GREEN); 
      } else if (value == b3) { 
       button3.setBackgroundColor(Color.GREEN); 
      } else if (value == b4) { 
       button4.setBackgroundColor(Color.GREEN); 
      } 
      i++; 
     } 
    } else { 

    } 
} 

나는 이것이 onCreate 메서드가 응용 프로그램의 시작에서만 실행된다는 사실과 관련이 있다고 생각합니다. 내 버튼의 프레스가 계속 반응하도록하려면 어떻게해야합니까?

+0

@codePG 그게 너를 혼란스럽게한다면, 나는 그 부분을 꺼내야 만했을 것이다. 버튼을 눌렀을 때 (예 : 색상 변경) 발생하는 다른 것들은 두 번째로 발생하지 않습니다. – RainbowJeremy

답변

3

당신이 checkOrder 방법 b1, b2, b3, b4 새 값을 생성 후

int[] nums = { b1, b2, b3, b4 }; 

의 값을 할당해야합니다 수 있음.

if (value == nums[i])을 두 번째로 동일 시도 할 때 조건은 항상 false입니다. nums의 값은 이전에 생성 된 값입니다.

도움이 되었기를 바랍니다.

+0

예, 이것이 문제였습니다. b1, b2 등의 값을 변경했을 때 nums 배열을 다시 만들어야했습니다. – RainbowJeremy

+0

다행입니다. – codePG

관련 문제