Reputation: 101
I'm switching between two images and I want to setOnTouchListener when only 1 of the images is displayed. Here is the code:
Switch switch2 = (Switch) rootView.findViewById(R.id.switch2);
final ImageView iv = (ImageView) rootView.findViewById(R.id.image2);
switch2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
iv.setImageResource(R.drawable.sijuki2);
} else {
iv.setImageResource(R.drawable.sijuki2_default);
}
}
});
if (switch2.equals(false)) {
if (iv != null) {
iv.setOnTouchListener(this);
}
}
But OnTouch is not working in the app. I tried putting iv.setOnTouchListener(this)
inside onCheckedChanged
but I got an error on (this)
.
Thanks.
Upvotes: 0
Views: 254
Reputation: 101
Ok I got the functionality I wanted. Thanks Usman for your help. This is what I ended up doing.
Switch switch2 = (Switch) rootView.findViewById(R.id.switch2);
final ImageView iv = (ImageView) rootView.findViewById(R.id.image2);
switch2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
iv.setImageResource(R.drawable.sijuki2);
iv.setOnTouchListener(null);
} else {
iv.setImageResource(R.drawable.sijuki2_default);
iv.setOnTouchListener(SecondFragment.this);
}
}
});
if (iv != null) {
iv.setOnTouchListener(this);
}
Upvotes: 0
Reputation: 1361
To use OnTouchListener, you have to implement view.OnTouchListenerin your fragment like that,
public class YourFragment extends Fragment implements View.OnTouchListener{
When you implement view.OnTouchListener, Then Inside Your Fragment you have to override onTouchmethod.
Your onTouchMethod should look like this,
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if(view.getId()==R.id.iv)
//your code here
return false;
}
Upvotes: 1