我正在开发一个应用程序,用户必须正确匹配图像及其相应的名称。
我的问题是,当用户首先选择图像并选择错误的名称时,它将显示错误的答案,如果他选择了答案,则会显示正确答案。
用户不必再次重新选择图像
我已将onClickListerner设为null但它不能正常工作我的一些代码如下,
txt_tag[0] = (TextView) findViewById(R.id.txt_tag1);
txt_tag[0].setOnClickListener(this);
txt_tag[0].setTypeface(tf);
txt_tag[1] = (TextView) findViewById(R.id.txt_tag2);
txt_tag[1].setOnClickListener(this);
txt_tag[1].setTypeface(tf);
txt_tag[2] = (TextView) findViewById(R.id.txt_tag3);
txt_tag[2].setOnClickListener(this);
txt_tag[2].setTypeface(tf);
txt_tag[3] = (TextView) findViewById(R.id.txt_tag4);
txt_tag[3].setOnClickListener(this);
txt_tag[3].setTypeface(tf);
img[0] = (ImageButton) findViewById(R.id.img1);
img[0].setOnClickListener(this);
img[1] = (ImageButton) findViewById(R.id.img2);
img[1].setOnClickListener(this);
img[2] = (ImageButton) findViewById(R.id.img3);
img[2].setOnClickListener(this);
img[3] = (ImageButton) findViewById(R.id.img4);
img[3].setOnClickListener(this);
btn_nxt = (Button) findViewById(R.id.btn_next);
btn_nxt.setOnClickListener(this);
我在该方法中调用了一个方法,其中我已经使所有onClickListerner的null
txt_tag[0].setOnClickListener(null);
txt_tag[1].setOnClickListener(null);
txt_tag[2].setOnClickListener(null);
txt_tag[3].setOnClickListener(null);
img[0].setOnClickListener(null);
img[1].setOnClickListener(null);
img[2].setOnClickListener(null);
img[3].setOnClickListener(null);
任何人都可以告诉我我哪里出错或者我可以对它做任何修改。
提前致谢
答案 0 :(得分:3)
尝试使用
txt_tag[0].setClickable(false);
txt_tag[1].setClickable(false);
..
img[0].setClickable(false);
img[1].setClickable(false);
..
答案 1 :(得分:2)
您的问题不是那么明确..但如果您希望自己的图片和文字标签无法点击,请在xml或android:clickable="false"
setClickable(false);
答案 2 :(得分:2)
如果我是你,我会在听众中检查那个逻辑。因此,如果静止(如果它是一个测验)处于“ANSWERED”状态,则不要对事件作出反应。
答案 3 :(得分:1)
这是我的建议,如果你想要编写特定的行为代码,你可以使用onClickListener回调来实现你想要的。
在监听器中,检查图像的状态;如果它已经被选中并且您想忽略该事件,那么您只需退出回调。
我认为将onClickListener设置为null是错误的。
答案 4 :(得分:1)
你的问题不清楚,但我理解如下:
ImageViews
和一堆TextViews
以及它们之间的映射。ImageView
,然后选择TextView
。如果匹配,“正确答案”将显示在某处,否则,将显示“错误答案”如果这是正确的,你可以这样做:你保留两个变量
int selectedImage = -1;
int selectedText = -1;
在OnClickListener
中,您可以像这样更新其值:
if (source instanceof ImageViews) {
selectedImage = getArrayIndex(source); // I guess you already have a method to retrieve the index
selectedText = -1; // reset textSelection
} else {
if (selectedText < 0) {
selectedText = getArrayIndex(source);
}
}
updateAnswerTextView(); // here you check if the two selections (selectedText and selectedImage) match and display the corresponding string.
相反,您可以遍历TextView
数组并调用
setClickable(false);
单击一个元素后,立即对每个元素执行。如果选择了新图像,则必须将它们再次设置为可单击。
编辑:我同意Rob的意见,你不应该删除Listeners
来实现这种行为。