2015-04-09 5 views
0

У меня есть 20 XML-макетов. Я хочу, чтобы показать случайные xml-макеты при нажатии кнопки. Я пробовал и читал same problem как мой, но я не работал.Случайный макет XML при нажатии кнопки

Например, в классе Level1, когда пользователь нажал кнопку PositiveButton в AlertDialog, будет открыт случайный XML-макет (уровень 20 или уровень 15, а не уровень 2).

Это код в классе Level1 (тот же шаблон применяется для остальных классов)

public class Luzon1 extends Activity { 
 
\t private String [] answers; 
 
\t private Button answerButton; 
 
\t private TextView scoreTxt, showClue; 
 
\t private EditText answerText; 
 
\t int scoreNew=0; 
 
\t public Button yes; 
 

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

 

 
\t } 
 
\t public void init() 
 
\t { 
 
\t //correct answer 
 
\t answers=new String[]{"Tarlac"}; 
 
\t 
 
(R.id.AnswerButton); 
 
\t answerButton.setOnClickListener(new OnClickListener() { 
 
\t \t 
 
\t \t @Override 
 
\t \t public void onClick(View v) { 
 
\t \t \t // TODO Auto-generated method stub 
 
\t \t \t checkAnswer(); 
 
\t \t } 
 
\t }); 
 
\t } 
 
\t 
 
\t public boolean isCorrect(String answer) 
 
\t { \t return(answer.equalsIgnoreCase(answers[currentQuestion])); \t } 
 

 
\t public void checkAnswer() 
 
\t { \t String answer=answerText.getText().toString(); \t 
 
\t 
 
\t \t if(isCorrect(answer)) 
 
\t \t { \t \t 
 
\t \t \t 
 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
 
      builder.setTitle("Congratulations! You will receive P10!"); 
 
      builder.setMessage("Did you know that Former bla bla bla Did you know that Former bla bla bla Did you know that Former bla bla bla"); 
 
      builder.setIcon(android.R.drawable.btn_star_big_on); 
 
      builder.setPositiveButton("OK",new DialogInterface.OnClickListener() { 
 
      public void onClick(DialogInterface dialog, int which) { 
 
       
 
     \t \t String userData=scoreTxt.getText().toString(); 
 
\t \t \t \t int userNumber=Integer.parseInt(userData); 
 
      \t 
 
\t \t \t \t Intent intent=new Intent(Luzon1.this, Luzon2.class); 
 
\t \t \t \t intent.putExtra("parameter name", userNumber); 
 
\t \t \t \t startActivity(intent); 
 
      \t Luzon1.this.finish(); System.exit(0); 
 
      \t 
 
      \t } }); 
 
      AlertDialog alert = builder.create(); 
 
\t \t  alert.show(); // Show Alert Dialog 
 
\t \t

Большое спасибо заранее. и любой фрагмент кода будет большой помощью.

+0

вы имеете в вид расположения XML для деятельности? И изменилось ли это в вашем методе 'onClick'? –

+0

yes im ссылаясь на макет xml. при нажатии кнопки уровень 2 открывается. – Pucckat19

+0

где вы хотите установить эти макеты? разместить соответствующий код? –

ответ

0

Установка раскладки внутри onClick()

Если вы хотите, чтобы этот код будет в методе onClick() в вашей предыдущей деятельности (показано выше), используйте следующий код:

@Override 
protected void onClick(DialogInterface dialog, int which) { 
    Random generator = new Random(); 
    int number = generator.nextInt(NUMBER_OF_LEVELS) + 1; 

    Class activity; 

    switch(number) { 
     case 1: 
      activity = LevelOne.class; 
      break; 
     case 2: 
      activity = LevelTwo.class; 
      break; 
     case 3: 
      activity = LevelThree.class; 
      break; 
     case 4: 
      activity = LevelFour.class; 
      break; 
     case 5: 
      activity = LevelFive.class; 
      break; 

     ... 

     case 20: 
      activity = LevelTwenty.class; 
      break; 
    } 

    Intent intent = (getBaseContext(), activity); 
    startActivity(intent); 
} 
+0

это понятно. но будет открыт класс level2 и xml. то, что я хочу, это открыть случайный xml-макет, например level20, или level18 или level5. – Pucckat19

+0

Итак, в вашем классе Level2 откроется макет случайного уровня. –

+0

да. это моя цель. – Pucckat19

0

Попробуйте это :

Объявить публичный статический счетчик Int = 0 до OnCreate .. затем, в OnClick увеличивает счетчик на 1 (кол ++) .. Используйте заявление переключателя как, (Dont подделать т для сброса счетчика на 0, когда счетчик становится 20)

void onClick(){ 
     count++; 

     switch(count) { 
      case 1: 
        setContentView(R.layout.yourLayout1); 
        break; 
      case 2: 

        setContentView(R.layout.yourLayout2); 
        break; 
      case 3: 
        setContentView(R.layout.yourLayout3); 
        break;     
      case 4: 
        setContentView(R.layout.yourLayout4); 
         ................................ 
         ................................ 
      case 20: 
        setContentView(R.layout.yourLayout20); 
        break;      
      } 
     if(count==20){ 
      count = 0; 
} 

} 

А также вместо приращения рассчитывать каждые щелчки времени пользователя, вы можете использовать Math.random() и назначить его count (Не забудьте проверить (использовать, если заявление) Math.random() возвращается значение, которое меньше или равно 20 ..)

Надеется, что это поможет вам ..

Смежные вопросы