رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

سوال در کد نویسی یک پروژه


پست های پیشنهاد شده

با عرض سلام و خسته نباشید خدمت اساتید و دوستان محترم

دوستان من یک پروژه از گیت هاب دریافت کردم در یکی از قسمت هاش گیر کردم که چیکار کنم!!

به این کدها نگاه کنید :

public class CircleActivity extends Activity

{

private CircleMenuLayout mCircleMenuLayout;

private String[] mItemTexts = new String[] { "1", "2", "3",

"4", "5", "6" };

private int[] mItemImgs = new int[] { R.drawable.home_mbank_1_normal,

R.drawable.home_mbank_2_normal, R.drawable.home_mbank_3_normal,

R.drawable.home_mbank_4_normal, R.drawable.home_mbank_5_normal,

R.drawable.home_mbank_6_normal };

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main02);

mCircleMenuLayout = (CircleMenuLayout) findViewById(R.id.id_menulayout);

mCircleMenuLayout.setMenuItemIconsAndTexts(mItemImgs, mItemTexts);

mCircleMenuLayout.setOnMenuItemClickListener(new OnMenuItemClickListener()

{

@Override

public void itemClick(View view, int pos)

{

Toast.makeText(CircleActivity.this, mItemTexts[pos],

Toast.LENGTH_SHORT).show();

}

@Override

public void itemCenterClick(View view)

{

Toast.makeText(CircleActivity.this,

"you can do something just like ccb  ",

Toast.LENGTH_SHORT).show();

}

});

}

}

اون عددهای 1 تا 6 که در کد بالا هستن هر کدوم یک دکمه هستن که زمانی که بر روی ان ها کلیک میکنم همون اسم خودشون یعنی عدد خودشون رو در یک Toast نشون میدن...

ولی من میخوام هنگامی که روی یکی از اون ها کلیک کردم بتونم از اکتیویتی فوق یه یک اکتیویتی دیگه برم.

در واقع برای هر کدام از اعداد میخوام یک اکتیویتی تعریف کنم که هنگامی که روی یکی از انها کلیک شد به حای نشان دادن Toast به اکتیویتی که براش تعیین میکنم رحوع کنه...

متاسفانه ندونستم برای هر یک از اعداد چگونه در این کلاس یک ای دی تعریف کنم که با استفاده از intent بتونم برای هر کدام یک اکتیویتی تعریف کنم!!

با تشکر فراوان از همه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

باید توی متد itemClick ای که توی کدی که گذاشتی هست رویداد تعریف کنی واسه آیتم هات

البته لازم نیست برای هر عدد یه اکتیویتی ایجاد کنی. یه اکتیویتی جدید درست کن.

توی متد itemClick یه پارامتر pos هست که عدد گزینه انتخاب شده رو نشون میده. شما باید مقدار این پارامتر رو به اکتیویتی ای که درست کردی بفرستی و اونجا تصمیم بگیری که مثلا اگر این مقدار 1 بود فلان کار رو بکنه یا اگر 2 بود و...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

باید توی متد itemClick ای که توی کدی که گذاشتی هست رویداد تعریف کنی واسه آیتم هات

البته لازم نیست برای هر عدد یه اکتیویتی ایجاد کنی. یه اکتیویتی جدید درست کن.

توی متد itemClick یه پارامتر pos هست که عدد گزینه انتخاب شده رو نشون میده. شما باید مقدار این پارامتر رو به اکتیویتی ای که درست کردی بفرستی و اونجا تصمیم بگیری که مثلا اگر این مقدار 1 بود فلان کار رو بکنه یا اگر 2 بود و...

با تشکر از شما

فقط اگه امکانش هست یک نمونه ی کوچیک رو برای یکی از باتن ها یا همون عددها که گفتید برای itemClick تعریف کنم رو همینجا زحمتش رو میکشید؟!!

چون حقیقتش رو بخوای خوب متوجه نشدم!!

یعنی متوجه نشدم برای هر کدام از باتن ها یک itemClick درست کنم!!

چجوری از طریق pos ارجاع بدم به یک اکتیویتی دیگه؟؟!

شرمنده

لینک ارسال
به اشتراک گذاری در سایت های دیگر

نه نباید برای هر دکمه itemClick تعریف کنی

ببین توی متد itemClick دستور نمایش Toast هست درسته؟ تو این دستور اومده مقدار pos رو به آرایه mItemTexts داده تا گزینه مربوط به آیتم کلیک شده رو نشون بده.

فرض می کنیم شما یه اکتیویتی جدید درست کردی به نام SecondActivity

حالا به جای اون دستور نمایش Toast طبق کد زیر یه Intent درست کنی و مقدار pos رو به اینتنت بدی و بعد اکتیوتی جدید رو با این اینتنت باز کنی (این کد رو باید توی متد itemClick بنویسی):

Intent i = new Intent(this, SecondActivity.class);
i.putExtra("posValue", pos);
startActivity(i);

اون posValue یه مقدار اختیاریه که به عنوان نشونه ای برای دسترسی به مقدار pos در اکتیویتی دوم به کار میره

شما فعلا تا همین جا رو انجام بده تا بقیش رو بهت بگم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

نه نباید برای هر دکمه itemClick تعریف کنی

ببین توی متد itemClick دستور نمایش Toast هست درسته؟ تو این دستور اومده مقدار pos رو به آرایه mItemTexts داده تا گزینه مربوط به آیتم کلیک شده رو نشون بده.

فرض می کنیم شما یه اکتیویتی جدید درست کردی به نام SecondActivity

حالا به جای اون دستور نمایش Toast طبق کد زیر یه Intent درست کنی و مقدار pos رو به اینتنت بدی و بعد اکتیوتی جدید رو با این اینتنت باز کنی (این کد رو باید توی متد itemClick بنویسی):

Intent i = new Intent(this, SecondActivity.class);
i.putExtra("posValue", pos);
startActivity(i);

اون posValue یه مقدار اختیاریه که به عنوان نشونه ای برای دسترسی به مقدار pos در اکتیویتی دوم به کار میره

شما فعلا تا همین جا رو انجام بده تا بقیش رو بهت بگم

دوست عزیز طبق همون کاری که گفتید انجام دادم ولی تو کد رفتن به اکتیویتی دیگه ایراد میگیره..

اکتیویتی رو تو منیفست هم وارد کردم...عکسش رو براتون ارسال میکنم.


اگر لازمه میخواید سورس کد رو بفرستم خودتون یه بررسی کنین؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

تو کدی که دادم به جای this اینو بنویس : CircleActivity.this

عالیه....جواب داد....واقعا متشکر

فقط من الان بخوام برای هر کدوم از باتن های 1 تا 6 یک دستور تعریف کنم الان باید چه کاری انجام بدم؟؟

چون الان رو هر کدوم از باتن ها مبزنم همون یک دستور رو اجرا میکنه...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خب حالا باید اون مقدار pos رو که با اینتنت فرستادی رو توی این اکتیویتی بگیری

توی onCreate کد زیر رو بنویس:

int id = getIntent().getIntExtra("posValue", 0);

یه متغیر از نوع int به نام id تعریف کردیم که میاد اون مقداری که با اینتنت فرستادی رو میگیره.

یعنی اول اینتنتی که این اکتیویتی رو باز کرده با متد getIntent میگیره و بعد با متد getIntExtra میاد مقداری که به اینتنت دادیم رو بگیره (چون pos از جنس int بود پس باید از getIntExtra استفاده بشه)

پارامترهای متد getIntExtra :

اولیش همون نشونه ای هست که توی اکتیویتی اول تعریف کردیم برای مقدار pos . حالا اینجا از اون نشونه استفاده می کنیم تا مقدار pos رو بگیریم

پارامتر دومیش هم مقدار پیشفرضه که درصورتی استفاده میشه که چیزی به نام posValue پیدا نکنه که البته مهم نیست چون توی اکتیویتی اول ما این مقدار رو دادیم بهش

حالا که مقدار فرستاده شده از اکتیویتی اول رو داری میتونی یه دستور شرطی بزاری که اگه مثلا 1 بود فلان کار و 2 بود فلان کار و ... انجام بده

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خب حالا باید اون مقدار pos رو که با اینتنت فرستادی رو توی این اکتیویتی بگیری

توی onCreate کد زیر رو بنویس:

int id = getIntent().getIntExtra("posValue", 0);

یه متغیر از نوع int به نام id تعریف کردیم که میاد اون مقداری که با اینتنت فرستادی رو میگیره.

یعنی اول اینتنتی که این اکتیویتی رو باز کرده با متد getIntent میگیره و بعد با متد getIntExtra میاد مقداری که به اینتنت دادیم رو بگیره (چون pos از جنس int بود پس باید از getIntExtra استفاده بشه)

پارامترهای متد getIntExtra :

اولیش همون نشونه ای هست که توی اکتیویتی اول تعریف کردیم برای مقدار pos . حالا اینجا از اون نشونه استفاده می کنیم تا مقدار pos رو بگیریم

پارامتر دومیش هم مقدار پیشفرضه که درصورتی استفاده میشه که چیزی به نام posValue پیدا نکنه که البته مهم نیست چون توی اکتیویتی اول ما این مقدار رو دادیم بهش

حالا که مقدار فرستاده شده از اکتیویتی اول رو داری میتونی یه دستور شرطی بزاری که اگه مثلا 1 بود فلان کار و 2 بود فلان کار و ... انجام بده

خیلی ممنون

فقط یه کم سخت شد:)

متوجه شدما اما الان من توی اکتیویتی SecondActivity دستور int id = getIntent().getIntExtra("posValue", 0); رو توی OnCreate قرار دادم...

ولی شرطش رو نفهمیدم چه جوری باید تو if و else قرار بدم که هر مقدار رو به خودش ربط بدم.

چون تو دستور if قرار دادم که اگه id=1 باشه فلان دستور اجرا شه....ولی ایراد گرفت!!

ولی از یه طرف میبینم ما از جنس int اومدیم id رو تعریف کردیم

پس قاعدتا "posValue" رو نمیشه برای مقدار دستور شزطی استفاده کرد از طرفی هم آی دی از قبل تعریف شده نداریم که تو دستور شرطی قرار بدیم!!!

:huh::huh:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آره طبق عکس پیش برو درسته


برای نوشتن شرط این طوری بنویس

[shcode=java]if(id==1){}

else if(id==2){}

.

.

.

[/shcode]


و اینکه دوست عزیز دانش برنامه نویسی شما بسیار ضعیفه و احتیاج به تمرین زیاد دارین 

امیدوارم موفق باشید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آره طبق عکس پیش برو درسته


برای نوشتن شرط این طوری بنویس

[shcode=java]if(id==1){}

else if(id==2){}

.

.

.

[/shcode]


و اینکه دوست عزیز دانش برنامه نویسی شما بسیار ضعیفه و احتیاج به تمرین زیاد دارین 

امیدوارم موفق باشید

درسته حق با شماست.

بابت کمک و پیگیریتون واقعا متشکرم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خواهش میکنمالبته من کاری نکردم دوست عزیزم مصطفی زحمت راهنمایی رو کشید دستش درد نکنه

متشکرم از همگی دوستان

ببخشید به خاطر ضعیف بودنم در برنامه نویسی اذیتتون کردم.:S

ولی خواستم فقط به اطلاع برسونم که تمامی دستورات گفته شده رو انجام دادم ولی متاسفانه برنامه برای هر باتن اون کاری که باید انجام بده رو نداد.

یعنی برای همه فقط یک دستور کار میکرد که اون هم رفتن به اکتیویتی دوم بود!!!

سورس کد اصلی رو که از سایت گیت هاب دریافت کردم رو همین جا ارسال میکنم...بر روی اکلیپس به راحتی import میشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من مطمنم مشکلت از اکتویتی قبلیته اونجا تو قسمت ارسال مقدار به اکتویتی دومت یه مشکلی داری که داره فقط یه مقدار رو هر دفعه مفرسته برای همین همش یه کار یکسان رو انجام میده بهتره کد اون قمست رو بزار

لینک ارسال
به اشتراک گذاری در سایت های دیگر

چیزی که آقای محمد علی گفت هم ممکنه

بجای getBaseContext از this استفاده کن

کد اکتیویتی اولت رو هم بزار

همونطور که تو عکس مشخص کردم اون قسمت رو اقا مصطفی راهنمایی کردن که به جای Toast پیش فرض خودش گذاشتم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

یعنی چی الان قواعدات باید کار کنه که !!

راستش خودم هم گیج شدم

بار اول برنامه رو روی بلواستیک زدم نمیدونستم مشکلش چیه

ولی الان خروجی گرفتم از برنامه روی گوشی امتحان کردم وقتی کلیک میکنم روی یکی از ایتم ها برنامه کرش میکنه!!!

البته لازم به ذکر هم هست بعد از نصب برنامه روی دوم کلیک کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

چی بگم والله شما تا جایی که سوالاتت معلوم بود ما جواب دادیم الان هم اصلان نمی دونم چشه با مشاهده ی 4 تا عکس

لینک ارسال
به اشتراک گذاری در سایت های دیگر

کد ارسال و دریافت اطلاعات با اینتنت مشکلی نداره

یه سوال

الان این CircleActivity دقیقا کدوم اکتیویتیه؟ توی برنامه ای که گذاشتی صفحه اول یه لیست که نوشته اول و دوم. این کدومشه؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

کد ارسال و دریافت اطلاعات با اینتنت مشکلی نداره

یه سوال

الان این CircleActivity دقیقا کدوم اکتیویتیه؟ توی برنامه ای که گذاشتی صفحه اول یه لیست که نوشته اول و دوم. این کدومشه؟

دوست من CircleActivity  دومی هست...

البته الان هم یه چیزی رو خودم فهمیدم

بعد از کمپایل شدن و کرش کردن برنامه این پیغام رو توی LogCat مشاهده کردم که نمیدونم مشکلش چیه!!

یعنی بعد از وارد شدم به دوم و زدن یکی از گزینه ها تو برنامه این پیغام رو داد

لینک ارسال
به اشتراک گذاری در سایت های دیگر

چرا خطای تقسیم بر صفر میده :-/:huh:

حتما مشکل از کدهای کتابخونس وگرنه کدهایی که ما دادیم خطای محاسباتی تولید نمی کنن

لینک ارسال
به اشتراک گذاری در سایت های دیگر

چرا خطای تقسیم بر صفر میده :-/:huh:

حتما مشکل از کدهای کتابخونس وگرنه کدهایی که ما دادیم خطای محاسباتی تولید نمی کنن

والا چی بگم!!!:S

در هر صورت متشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...