2013-02-22 108 views
1

我是新来的android,我正在测试应用程序与一组问题,每个问题有一个问题(文本)和4个图像(imageButton),当用户选择正确图像,然后他们去下一个问题。因此,从问题到问题,我应该:Android:多个视图在一个活动

  1. 多次在一个活动中调用setContentView()? (布局对于所有问题都是相同的,只是问题文字和图像发生变化)
  2. 或者在xml中添加多个布局,并且在运行时设置每个布局的可见性? (但通过这样做,我收到了一个xml文件中太多视图的警告)
  3. 还有其他更好的建议吗?

感谢您的回复!

回答

0

我的建议填充动态的问题...

从你的角度做这样

1.Take XML有问题的文本和4张图片。 2.获取问题文本(TextView)和4个imageview的ID。 3.当过事件触发(即下一个问题)改变问题文本和答案图像..

试试这个简单的逻辑

int question=0; 
ImageView answer1,answer2,answe3,answer4; 
int answerids[]={R.id.answer1,R.id.answer1,R.id.answer1,R.id.answer1}; 
ImageView[] answerimages={answer1,answer2,answer3,answer4}; 
String questions[]={"Question1","Question2","...."}; 
int images[][]={{R.drawable.answer1,R.drawable.answer2,R.drawable.answer3,R.drawable.answer4},{second question drawables},{Third question drawables}...}; 

在做的onCreate这样

TextView question=findViewById(R.id.question); 
    for(int i=0;i<answerids.length;i++) 
    { 
     answerimages[i]=(ImageView)findViewById(answerids[i]); 
     answerimages[i].setImageResource(images[question][i]); 
     answerimages[i].setOnclickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       question+=1; 
      nextqueston(); 

      } 
     }); 

要填充下一个问题的文本和图像..

public void nextqueston() 
     { 
      question.setText(questions[queston]); 
      for(int i=0;i<answerids.length;i++) 
      { 
       answerimages[i].setImageResource(images[question][i]); 
      } 
     } 
+0

感谢您的回复! 所以当我调用setContentView(R.id.game)时,这个game.xml在这个时候,应该只有question1的文本和图像?我应该在哪里存储其余的图像?现在我很喜欢这样的问题: a。将资源存储到game.xml中,但我收到太多视图的警告 b。将资源存储到单独的xml文件中,但setContentView(R.id.game)不会指向该xml,因此对于无法找到的id有空指针异常。 – Teresa 2013-02-22 13:35:02

+0

嗨Pragnani, 非常感谢代码!它是非常明确的遵循,现在我的应用程序运行完美!我认为关键是使用“R.drawble ...”获取图像列表,而不是“R.id ...”,以避免空指针异常。 – Teresa 2013-02-22 17:12:24

0

只要保持相同的活动打开,当一个问题完成后,以编程方式在TextView上设置问题文本,对于ImageViews也是如此。所有在相同的布局。

+0

嗨谢谢你的回复! – Teresa 2013-02-22 13:07:14

+0

但是,如果我将所有图像添加到一个layout.xml文件中,我会收到“太多视图的警告”,但是如果我将问题添加到多个layout.xml文件中,即question1.xml,question2.xml和它们在我的game.xml,当我调用game.class和setContentView(R.id.game.xml)时,然后我收到“空指针异常”查找id查看。 – Teresa 2013-02-22 13:27:05

+0

你不把所有的图像放在一个XML布局文件。你需要4张图片,所以把4个ImageViews放到你的布局中。当你需要替换它们时,你可以使用mImageView.setImage()将4张图片替换为其他4张图片(在你的代码中以编程方式==)。 – FWeigl 2013-02-22 13:34:37