簡體   English   中英

單擊按鈕時的隨機XML布局

[英]Random XML Layout on button click

我有20個XML布局。 我想發生的是單擊按鈕時顯示隨機的xml布局。 我嘗試並閱讀了相同的問題 ,但是我沒有工作。

例如,在Level1類中,當用戶單擊AlertDialog中的PositiveButton時,將打開隨機XML布局(20級或15級而不是2級)。

這是Level1類中的代碼(相同的模式適用於其余類)

 public class Luzon1 extends Activity { private String [] answers; private Button answerButton; private TextView scoreTxt, showClue; private EditText answerText; int scoreNew=0; public Button yes; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_luzon1); } public void init() { //correct answer answers=new String[]{"Tarlac"}; (R.id.AnswerButton); answerButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub checkAnswer(); } }); } public boolean isCorrect(String answer) { return(answer.equalsIgnoreCase(answers[currentQuestion])); } public void checkAnswer() { String answer=answerText.getText().toString(); if(isCorrect(answer)) { 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) { String userData=scoreTxt.getText().toString(); int userNumber=Integer.parseInt(userData); Intent intent=new Intent(Luzon1.this, Luzon2.class); intent.putExtra("parameter name", userNumber); startActivity(intent); Luzon1.this.finish(); System.exit(0); } }); AlertDialog alert = builder.create(); alert.show(); // Show Alert Dialog 

提前非常感謝您。 任何代碼段都將提供很大的幫助。

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);
}

嘗試這個:

在onCreate之前聲明一個公共的靜態int計數=0。然后,在onClick中,將計數增加1(count ++)。使用switch語句,例如(當計數變為20時不要忘記將計數器重置為0)

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 (記住檢查(使用if語句) Math.random()返回的值小於或等於20 Math.random()而不是每次用戶單擊都增加計數。 )

希望對您有幫助。

暫無
暫無

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

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