【问题标题】:Random XML Layout on button click按钮单击时的随机 XML 布局
【发布时间】:2015-04-09 10:58:30
【问题描述】:

我有 20 个 XML 布局。我想要发生的是在单击按钮时显示随机 xml 布局。我尝试将same problem 视为我的,但我没有工作。

例如在 Level1 类中,当用户点击 AlertDialog 中的 PositiveButton 时,将打开随机 XML 布局(Level 20 或 Level 15 而不是 Level 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
		

提前非常感谢您。任何代码 sn-p 都会有很大帮助。

【问题讨论】:

  • 您指的是活动的 XML 布局吗?这在您的 onClick 方法中是否发生了变化?
  • 是的,我指的是 xml 布局。当单击按钮时,第 2 级打开。
  • 你想在哪里设置这个布局?贴出相关代码?

标签: java android xml random


【解决方案1】:

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

【讨论】:

  • 这很清楚。但将打开 level2 类和 xml 布局。我想要发生的是打开随机 xml 布局,例如 level20、level18 或 level5。
  • 因此,在您的 Level2 类中,将打开一个随机的关卡布局。
  • 我可以把代码放在警告对话框的正按钮里吗?
  • 我再次编辑了我的答案 - 这是你的意思吗?
  • 是的。我的最后一个问题是,当点击按钮时,上面的代码会随机布局吗?
【解决方案2】:

试试这个:

在 onCreate 之前声明一个 public static int count = 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 ..)

希望对你有所帮助..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多