بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
تغییر عکس با هر کلیک (حل شد)
سلام دوستان.
من این کد رو نوشتم برای تغییر عکس با هر بار کلیک روی عکس. اما فقط دفعه ی اول کار میکنه. علت چیه؟
final ImageView img = (ImageView) findViewById(R.id.img);
img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
boolean fav = false;
if ( !fav) {
img.setImageResource(R.drawable.icon1);
}
else {
img.setImageResource(R.drawable.icon2);
}
fav = !fav;
}
});
0
0
خوبه که مشکل حل شد، اما یک توصیه: پیش از انجام کدنویسی ابتدا به صوررت شفاهی برای خودتون مطرح کنید چکار می خواهید انجام بدید (11 سال پیش)
0
0
خوبه که مشکل حل شد، اما یک توصیه: پیش از انجام کدنویسی ابتدا به صوررت شفاهی برای خودتون مطرح کنید چکار می خواهید انجام بدید (11 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
sadeghbarout
11 سال پیش
+5
0
شما همواره بعد کلیک دارید fav رو false میکنی درصورتی که باید fav رو برعکس کنی:
final ImageView img = (ImageView) findViewById(R.id.img);
img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
fav = !fav;
if ( !fav) {
img.setImageResource(R.drawable.icon1);
}
else {
img.setImageResource(R.drawable.icon2);
}
}
});
بعد از تعیف کلاستون بنویسید public boolean fav; اینجوری فیلدی درست میکنید ک در تمام توابع کلاستون میتونین ازش استفاده کنین!البته به جای public از private هم میتونین استفاده کنین (اگر فقط از این متغیر توی همین کلاس استفاده میشه)
اطلاعات کامل راجع به این موضوع هم توی اموزش 04-01 Object Oriented Programming میتونین ببینین! (11 سال پیش)
پاسخ به سوال
Eminent
11 سال پیش
+3
0
مثلا من نمونه سورسی رو از پروژه های استاد رو میزارم متغیرهای circlePaint و percent بصورت فیلد یا سراسری تعریف شده اند که رنگ بنفش میگیرند :
public class CustomProgress extends ImageView {
public Paint circlePaint;
public Paint textPaint;
public static final int STROKE_WIDTH = 6;
public int percent = 100;
public CustomProgress(Context context) {
super(context);
initialize(context);
}
public CustomProgress(Context context, AttributeSet attrs) {
super(context, attrs);
initialize(context);
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .