سلام میخواستم بدونم چطوری میشه یه متغییر رو در سطح کلاس نوشت که مقدارش رو از onPageChangeListener بگیره؟ (که اون مقدار آدرس drawable عکسی باشه که تو اون صفحه است)
نوشتن متغیر در سطح کلاس (در برنامه نویسی اندروید)
|
||||||||||||
نوشتن متغیر در سطح کلاس (در برنامه نویسی اندروید)
۱۳۹۳/۱۲/۲۱, ۱۰:۰۲ ب.ظ
سلام.
دقیق متوجه منظورتون نشدم. اگر بیشتر توضیح بدهید و بخشی از کدها رو هم ذکر کنید (توضیحات به همراه کدها باشد)، شاید بتونم کمکتون کنم. لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید. در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی). کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
نوشتن متغیر در سطح کلاس (در برنامه نویسی اندروید)
۱۳۹۳/۱۲/۲۲, ۰۱:۳۶ ق.ظ
من تو برنامه ام از گرید ویو با image View pager استفاده کردم حالا وقتی میخوام اون عکس ها رو اشتراک گذاری کنم (share) رو هر کدم از عکس ها که برم فقط اون عکس اولی که تو آداپتر بود اشتراک گذاری میشه. چطوری میشه عکس یه که از image View pager آدرس دهی شده رو به اشتراک گذاشت؟؟؟ تو یه جایی خوندم که باید از onPageChangeListener استفاده کرد
این کد صفحه ای که عکس های گرید ویو رو نمایش میدست و برای عوض کردن عکس ها هم از viewPager استفاده کردم و تو اکشن بار من یک دکمه گذاشتم که وقتی رو اون کلیک شد عکس اون صفحه رو اشترک گذاری کنه ولی وقتی رو اون دکمه کلیک میکنم فقط اولین عکس آداپتر رو share میکنه و وقتی عکس هم عوض میکنم باز هم همون عکسه اشتراک گذاری میشه!!
کد پیاچپی: package com.microprogram.postallcard; نوشتن متغیر در سطح کلاس (در برنامه نویسی اندروید)
کد مربوط به ساخت Bitmap (که بعدا برای ساخت فایل عکس برای به اشتراک گذاری به کار می رود) را ببینید :
کد پیاچپی: bitmap= BitmapFactory.decodeResource(getResources(),imageAdapter.mThumbIds[i]); در آن، عکس را با عبارت زیر مشخص کرده اید : کد پیاچپی: imageAdapter.mThumbIds[i] که یعنی عنصر شماره i از آرایه مورد نظر (آرایه mThumbIds در imageAdapter). حالا ببینیم که این شماره i چجوری تعیین می شود، بنابراین در خط های قبل تر، این خط از کدها را داریم : کد پیاچپی: int i = 0; بنابراین i برابر صفر تعریف شده (و تا آنجایی که من بررسی کردم، ندیدم در جای دیگری تغییر داده بشه)، یعنی ما همیشه اولین عنصر از آن آرایه (Array) را فراخوانی می کنیم. مثلا اگر آن را به 1 تغیییر بدهید، احتمالا همیشه عکس دوم از آرایه فراخوانی شده و بعد به اشتراک گذاری می شود. من با ساختار کدهایی که به کار بردید، خیلی آشنا نیستم، ولی در کل باید به جای i ، متغیری را بنویسید که شماره درست متناظر با عکس را به شما بدهد. مثلا همین متغیر position ، احتمالا در کدها، به عنوان شماره متناظر با عکس باید باشد. یعنی کد زیر را به جای آن خط از کدها بنویسید : کد پیاچپی: imageAdapter.mThumbIds[position] که در آن، position را به جای i نوشته ایم. اگر درست عمل نکرد، متغیر مناسب برای نمایش شماره متناظر با عکس را بر اساس ساختار کدها بسازید. لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید. در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی). کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
نوشتن متغیر در سطح کلاس (در برنامه نویسی اندروید)
دوست عزیز همون طور که آدمین جان گفت شما اشتباهتون این که توی دستور زیر از شمارنده i استفاده کردید..
کد پیاچپی: bitmap= BitmapFactory.decodeResource(getResources(),imageAdapter.mThumbIds[i]); وچون مقدار i برابر صفر بوده در سطح کلاس پس اصولا باید همان عکس اول ارسال شود..حالا چه کنیم.بهترین روش اینه که onpagerLisinerاستفاده کنید..دقت کنید به نظر من بهترین روش چون میشود از روش کوتاه تر استفاده کرد اما توی خیلی موارد و Sdkمختلف ممکن است کار نکند.. ابتدا در سطح اصلی کلاس یه متغییر سراسری مثل زیر بسازید. کد پیاچپی: int Base_position=0; و سپس روی viewPager خودتون یه شنونده pagerLisinear تعریف کنید..این شنونده زمانی صدا زده میشود که صفحه تغییر کند.. کد پیاچپی: viewPag.setOnPageChangeListener(new OnPageChangeListener() { در کد بالا چندین متد overrideشده است ..که یکی از این متدها باید بهش توجه کنید متد زیر است کد پیاچپی: @Override این متد یه ورودی position داره که شماره همون صفحه ای است که در آن قرار داریم..داخل بدنه این شماره رو به متغیرBase_position پاس دادیم.. حالا میتونید این متغییر رو جانشین i کنید. کد پیاچپی: bitmap= BitmapFactory.decodeResource(getResources(),imageAdapter.mThumbIds[Base_position]); امیدوارم توضیحات کامل بوده باشه و مشکلتون حل بشه.
نوشتن متغیر در سطح کلاس (در برنامه نویسی اندروید)
۱۳۹۳/۱۲/۲۵, ۰۹:۴۴ ب.ظ
(۱۳۹۳/۱۲/۲۲, ۰۳:۳۹ ق.ظ)'داش بهروز' نوشته: دوست عزیز همون طور که آدمین جان گفت شما اشتباهتون این که توی دستور زیر از شمارنده i استفاده کردید.. ممنون که پاسخم رو دادید. این روش کار میکنه. همه ی کار هایی رو که گفتید رو انجام دادم و کدم شو این: کد پیاچپی: package com.microprogram.postallcard; چون در این حالتی که من گذاشتم کد پیاچپی: bitmap= BitmapFactory.decodeResource(getResources(),imageAdapter.mThumbIds[Base_position]); همه راه هایی رو که میتونستم امتحان کردم ولی بازم نشد. یه بارم کد اشتراک گذاری رو توی این قسمت کذاشتم همه چیز درست بود ولی مشکل این جا بود که هر وقت صفحه رو عوض میکردم صفحه اشتراک گذاری باز میشد: کد پیاچپی: public void onPageSelected(int position) { نوشتن متغیر در سطح کلاس (در برنامه نویسی اندروید)
۱۳۹۳/۱۲/۲۶, ۰۳:۴۴ ق.ظ
خب اشتباه کردید.احتیاجی نیست که viewPager داخل آداپتر ببرید..فقط
دوست عزیز متغییر Base_position را در بیرون از متدها یعنی در سطح کلاس به صورت سراسری تا در تمام متدها بتونیدش استفاده کنید...مثلا در بالای تابع oncreate کد پیاچپی: public class Eshgh_ImageShow extends ActionBarActivity { یعنی فقط کافیه Base_position به صورت سراسری تعریف کنی همین..
| ||||||||||||
کاربران در حال بازدید این موضوع: 1 مهمان