Android:多个视图在一个活动
我是新来的android,我正在测试应用程序与一组问题,每个问题有一个问题(文本)和4个图像(imageButton),当用户选择正确图像,然后他们去下一个问题。因此,从问题到问题,我应该:Android:多个视图在一个活动
- 多次在一个活动中调用setContentView()? (布局对于所有问题都是相同的,只是问题文字和图像发生变化)
- 或者在xml中添加多个布局,并且在运行时设置每个布局的可见性? (但通过这样做,我收到了一个xml文件中太多视图的警告)
- 还有其他更好的建议吗?
感谢您的回复!
我的建议填充动态的问题...
从你的角度做这样
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]);
}
}
只要保持相同的活动打开,当一个问题完成后,以编程方式在TextView上设置问题文本,对于ImageViews也是如此。所有在相同的布局。
嗨谢谢你的回复! – Teresa 2013-02-22 13:07:14
但是,如果我将所有图像添加到一个layout.xml文件中,我会收到“太多视图的警告”,但是如果我将问题添加到多个layout.xml文件中,即question1.xml,question2.xml和
你不把所有的图像放在一个XML布局文件。你需要4张图片,所以把4个ImageViews放到你的布局中。当你需要替换它们时,你可以使用mImageView.setImage()将4张图片替换为其他4张图片(在你的代码中以编程方式==)。 – FWeigl 2013-02-22 13:34:37
感谢您的回复! 所以当我调用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
嗨Pragnani, 非常感谢代码!它是非常明确的遵循,现在我的应用程序运行完美!我认为关键是使用“R.drawble ...”获取图像列表,而不是“R.id ...”,以避免空指针异常。 – Teresa 2013-02-22 17:12:24