آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

تغییر عکس با هر کلیک (حل شد)

بانوی شرقی  11 سال پیش  11 سال پیش
0 0

سلام دوستان.

من این کد رو نوشتم برای تغییر عکس با هر بار کلیک روی عکس. اما فقط دفعه ی اول کار میکنه. علت چیه؟

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);
                }
                

            }

        });
0 0
درسته. ولی من boolean fav = false; رو برای این گذاشتم چون اگه زیر تعریف ImageView میزاشتمش باید به final تبدیلش میکردم و بعدش نمیتونستم اون رو برعکس کنم. با این کدی که شما نوشتید تعریف متغیر fav کجا انجام میشه؟ (11 سال پیش)
+2 0
اونو به صورت یه فیلد بعد از تعریف کلاس بذارید (11 سال پیش)
0 0
ببخشید با توجه به اینکه خیلی پراکنده دارم آموزش ها رو یاد میگیرم فراموش کردم فیلد رو چطوری تعریف میکردیم؟! ممکنه اینم بگید؟ (معذرت بابت ابتدایی بودن سوالام) (11 سال پیش)
+1 0
دوست عزیز منظور از فیلد متغیر سراسری هستش مثلا همون متغیر رو در داخل کلاس اصلی در بالای تمام متدها تعریف کن و در همه جا استفاده کن. (11 سال پیش)
+1 0
بعد از تعیف کلاستون بنویسید 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);

    }
+1 0
هر چهار تا که بالای constructorها تعریف شدند فیلد هستند تو محیط اکلیپس من بنفش هستند اما اینجا سفید دیده میشه! (11 سال پیش)
0 0
حل شد . ممنونم به شدت (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .