setonclicklistener 在 运行 线程中没有工作两次
setonclicklistener not working twice inside running thread
我正在尝试使用位于屏幕右上角的交叉图像(代码中的cancel_video_image_view)关闭视图,如图demo image 所示。它是第一次工作但第二次失败,为什么在 运行 线程中设置点击侦听器第二次不工作?请帮助:
demo image
这是代码
@Override
public void onTargetRecognized(final Tracker tracker_, final String targetName_) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (targetName_.toString().equalsIgnoreCase("TargetOne")) {
LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
LinearLayout controls = (LinearLayout) inflater.inflate(R.layout.one_video_gallery, null);
viewHolder.addView(controls);
info_one_video_gallery = (TextView)findViewById(R.id.info_one_video_gallery);
monument_name_one_video_gallery = (TextView)findViewById(R.id.monument_name_one_video_gallery);
one_video_gallary_imageview = (ImageView)findViewById(R.id.one_video_gallary_imageview);
one_video_gallary_thumbnail = (ImageView)findViewById(R.id.one_video_gallary_thumbnail);
final ImageView cancel_video_image_view= (ImageView)findViewById(R.id.cancel_video_image_view);
cancel_video_image_view.setClickable(true);
one_video_gallary_imageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplication(),MediaFullScreenImageActivity.class);
String monument_images = PropertyFile.TargetOne + "_images";
intent.putExtra("monument_images",monument_images);
startActivity(intent);
}
});
one_video_gallary_thumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), MediaVideoActivity.class);
String monument = PropertyFile.TargetOne;
intent.putExtra("monument", monument);
String monument_images = PropertyFile.TargetOne + "_images";
intent.putExtra("monument_images", monument_images);
startActivity(intent);
}
});
if(cancel_video_image_view.getVisibility() == View.INVISIBLE){
cancel_video_image_view.setVisibility(View.VISIBLE);
cancel_video_image_view.setClickable(true);
one_video_gallary_imageview.setVisibility(View.VISIBLE);
one_video_gallary_thumbnail.setVisibility(View.VISIBLE);
info_one_video_gallery.setVisibility(View.VISIBLE);
monument_name_one_video_gallery.setVisibility(View.VISIBLE);
}
cancel_video_image_view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "You clicked the button", Toast.LENGTH_SHORT).show();
one_video_gallary_imageview.setVisibility(View.INVISIBLE);
one_video_gallary_thumbnail.setVisibility(View.INVISIBLE);
cancel_video_image_view.setVisibility(View.INVISIBLE);
info_one_video_gallery.setVisibility(View.INVISIBLE);
monument_name_one_video_gallery.setVisibility(View.INVISIBLE);
}
});
}
我认为您不应该将 onClickListener 放在 runOnUiThread 中。因为当调用onTargetRecongnized时,它会在短时间内检查if语句并完成runnable。
我正在尝试使用位于屏幕右上角的交叉图像(代码中的cancel_video_image_view)关闭视图,如图demo image 所示。它是第一次工作但第二次失败,为什么在 运行 线程中设置点击侦听器第二次不工作?请帮助: demo image 这是代码
@Override
public void onTargetRecognized(final Tracker tracker_, final String targetName_) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (targetName_.toString().equalsIgnoreCase("TargetOne")) {
LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
LinearLayout controls = (LinearLayout) inflater.inflate(R.layout.one_video_gallery, null);
viewHolder.addView(controls);
info_one_video_gallery = (TextView)findViewById(R.id.info_one_video_gallery);
monument_name_one_video_gallery = (TextView)findViewById(R.id.monument_name_one_video_gallery);
one_video_gallary_imageview = (ImageView)findViewById(R.id.one_video_gallary_imageview);
one_video_gallary_thumbnail = (ImageView)findViewById(R.id.one_video_gallary_thumbnail);
final ImageView cancel_video_image_view= (ImageView)findViewById(R.id.cancel_video_image_view);
cancel_video_image_view.setClickable(true);
one_video_gallary_imageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplication(),MediaFullScreenImageActivity.class);
String monument_images = PropertyFile.TargetOne + "_images";
intent.putExtra("monument_images",monument_images);
startActivity(intent);
}
});
one_video_gallary_thumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), MediaVideoActivity.class);
String monument = PropertyFile.TargetOne;
intent.putExtra("monument", monument);
String monument_images = PropertyFile.TargetOne + "_images";
intent.putExtra("monument_images", monument_images);
startActivity(intent);
}
});
if(cancel_video_image_view.getVisibility() == View.INVISIBLE){
cancel_video_image_view.setVisibility(View.VISIBLE);
cancel_video_image_view.setClickable(true);
one_video_gallary_imageview.setVisibility(View.VISIBLE);
one_video_gallary_thumbnail.setVisibility(View.VISIBLE);
info_one_video_gallery.setVisibility(View.VISIBLE);
monument_name_one_video_gallery.setVisibility(View.VISIBLE);
}
cancel_video_image_view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "You clicked the button", Toast.LENGTH_SHORT).show();
one_video_gallary_imageview.setVisibility(View.INVISIBLE);
one_video_gallary_thumbnail.setVisibility(View.INVISIBLE);
cancel_video_image_view.setVisibility(View.INVISIBLE);
info_one_video_gallery.setVisibility(View.INVISIBLE);
monument_name_one_video_gallery.setVisibility(View.INVISIBLE);
}
});
}
我认为您不应该将 onClickListener 放在 runOnUiThread 中。因为当调用onTargetRecongnized时,它会在短时间内检查if语句并完成runnable。