PDA

View Full Version : نحوه اتصال یک اکتیویتی به یک آیتم از منو



yuttrim20
دوشنبه 17 آذر 1393, 15:50 عصر
با سلام، من از طریق فایل Main.xml یک منو ساختم که چند تا آیتم داره حالا چطور میتونم برای هر کدوم از این آیتم ها یک اکتیویتی تعریف کنم که وقتی رو آیتم کلیک کرد داخل اکتویتی مربوطه بشه؟
خودم اول یه اکتیویتی در پوشه Layout ساختم بعد در Main.xml خاصیت Action Layout رو برابر با اون اکتویتی جدید گذاشتم اما کار نمیکنه متاسفانه!
میشه راهنمایی بفرمایید؟

yuttrim20
چهارشنبه 19 آذر 1393, 00:03 صبح
دیدم اساتید خیلی سرشون شلوغه وقت ندارن سوالات خیلی مبتدی رو پاسخ بدن خودم دست به کار شدم یه کد دست و پا شکسته ای نوشتم حالا میزارم اینجا تا اگه واسه دوستان دیگه سوال به وجود اومد جوابی هم وجود داشته باشه!
ابتدا میرید به صفحه جاوایی که منو در اون وجود داره مثلا اگه منو در Activity_main.xml وجود داره شما به صفحه mainactivity.java رفته و پس از آخرین کد نوشته شده یعنی بعد از کد:


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}


کد زیر که همون اتصال آیتم های منو به اکتیویتی هست رو مینویسید:


@Override
public boolean onOptionsItemSelected(MenuItem item){

switch (item.getItemId()){
case R.id.menu_item1:
Intent intent = new Intent(this,ActivityFromItemOne.class);
this.startActivity(intent);
break;
case R.id.menu_item2:
Intent intent1 = new Intent(this,ActivityFromItemTwo.class);
this.startActivity(intent1);
break;
default:
return super.onOptionsItemSelected(item);

}
return true;
}
}


خب به همین راحتی کار انجام میشه فقط اینو بگم که منظور از menu_item1 آی دی آیتم اول منو هست که شما با توجه به آی دی اولین آیتم خودتون این مقدار رو ست کنین و منظور از ActivityForItemOne.class نام اکتویتی شماست که قراره با کلیک کردن بر روی آیتم اول منوی خودتون به این اکتویتی برید دقت کنین که وقتی یک اکتویتی در پوشه Layout میسازین برای اینکه بتونین از طریق آیتم های منو به اون اکنویتی دسترسی داشته باشین باید در پوشه src در قسمت com.example.nameproject یک کلاس هم نام با همون اکتویتی ایجاد شده در Layout بسازید و به جای ActivityForItemOne.class نام کلاس جدیدی که ایجاد کردین رو بذارید شرمنده اگه بد توضیح دادم
موفق باشید

yuttrim20
چهارشنبه 19 آذر 1393, 01:22 صبح
دیدم اساتید خیلی سرشون شلوغه وقت ندارن سوالات خیلی مبتدی رو پاسخ بدن خودم دست به کار شدم یه کد دست و پا شکسته ای نوشتم حالا میزارم اینجا تا اگه واسه دوستان دیگه سوال به وجود اومد جوابی هم وجود داشته باشه!
ابتدا میرید به صفحه جاوایی که منو در اون وجود داره مثلا اگه منو در Activity_main.xml وجود داره شما به صفحه mainactivity.java رفته و پس از آخرین کد نوشته شده یعنی بعد از کد:


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}


کد زیر که همون اتصال آیتم های منو به اکتیویتی هست رو مینویسید:


@Override
public boolean onOptionsItemSelected(MenuItem item){

switch (item.getItemId()){
case R.id.menu_item1:
Intent intent = new Intent(this,ActivityFromItemOne.class);
this.startActivity(intent);
break;
case R.id.menu_item2:
Intent intent1 = new Intent(this,ActivityFromItemTwo.class);
this.startActivity(intent1);
break;
default:
return super.onOptionsItemSelected(item);

}
return true;
}
}


خب به همین راحتی کار انجام میشه فقط اینو بگم که منظور از menu_item1 آی دی آیتم اول منو هست که شما با توجه به آی دی اولین آیتم خودتون این مقدار رو ست کنین و منظور از ActivityForItemOne.class نام اکتویتی شماست که قراره با کلیک کردن بر روی آیتم اول منوی خودتون به این اکتویتی برید دقت کنین که وقتی یک اکتویتی در پوشه Layout میسازین برای اینکه بتونین از طریق آیتم های منو به اون اکنویتی دسترسی داشته باشین باید در پوشه src در قسمت com.example.nameproject یک کلاس هم نام با همون اکتویتی ایجاد شده در Layout بسازید و به جای ActivityForItemOne.class نام کلاس جدیدی که ایجاد کردین رو بذارید شرمنده اگه بد توضیح دادم
موفق باشید
با اعتماد به نفس کامل اومدم آموزش دادم کد واسه خودم کار نمیکنه :دی
دوستان لطفا راهنمایی بفرمایید دیگه!
یه اکتویتی دارم تو پروژه که فقط و فقط با همون،آیتم های منو کار میکنه یعنی چند تا صفحه دیگه میذارم ارور میده کلا از برنامه میاد بیرون ولی همون اکتویتی رو برای کل آیتم ها میذارم مشکلی پیش نمیاد کلا رو یکی قفله! متوجه شدید؟:عصبانی++:

yuttrim20
چهارشنبه 19 آذر 1393, 01:41 صبح
متوجه اشکال کار شدم!
هر اکتویتی که ساخته میشه باید در Androidmainfest.xml به صورت زیر معرفی بشه:


<activity android:name=".activityname"></activity>