ورود

View Full Version : تغییر نام در تایتل نوه‌گیشن دراور با تغییر فرگمنت



sco1385
سه شنبه 24 تیر 1393, 23:11 عصر
دوستان!

من یک پروژه دارم که از نوه‌گیشن دراور استفاده می‌کنم.

خب. لیست را باز می‌کنم، و به فرگمنتی به نامِ "نیایش" می‌روم.

حالا که در فرگمنت نیایش هستم، در اکشن‌بار، اکشن هلپ را می‌زنم، و وارد فرگمنت هلپ می‌شوم، یک مشکل پیش می‌آید، و آن این که، نام فرگمنت هلپ، هم چنان همان نیایش می‌ماند، یعنی، با اینکه من از فرگمنت نیایش وارد فرگمنت هلپ شده‌ام، نام فرگمنت در تایتل برنامه تغییر نکرده و هم چنان "نیایش" است.

چند پست را در سایت "استک اورفلو" را خواندم. اما پیچیده بود. و نمی‌گفت که کدها را در کجا باید قرار داد.


چه کار کنم که این مشکل حل شود؟

لطفاً راهنمایی کنید.

ممنون

Lulzsec
سه شنبه 24 تیر 1393, 23:59 عصر
فرگمنت ها دسترسی به api های اکشن بار ندارند. پس شما باید از getActivity استفاده کنید. مگر اینکه فرگمنت شما کلاس داخلی ثابت باشه(static inner class)، شما باید یه WeakReference بسازید برای پدر شدن و بعد اکتیویتی رو صدا بزنید. getActionBar را از اونجا صدا بزنید.

و بعد هم که خودتون بلدید setTitle کنید. ( اگر هم بلد نیستید اکشال نداره --> getActivity().setTitle(YOUR_TITLE) اینجوری :لبخند:)

sco1385
چهارشنبه 25 تیر 1393, 12:14 عصر
با تشکر از شما

از این کد در آخر کد مربوط به اکشن هل‍ استفاده کردم.



setTitle(getResources().getString(R.string.Action_ Help));


کد اکشن هلپ که در مین اکتیویتی در قسمت اکشن بار قرار دارد این است:



@Override
public boolean onOptionsItemSelected(MenuItem item) {

// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}

// Handle action bar actions click
switch (item.getItemId()) {

// بازکردن فرگمنت برنامه
case R.id.Action_About:


FragmentManager myFragmentManager1 = getFragmentManager();
FragmentTransaction ft1 = myFragmentManager1.beginTransaction();
Fragment myFragment1 = new Barnameh();
ft1.replace(R.id.frame_container, myFragment1);
ft1.addToBackStack(null);
ft1.commit();
setTitle(getResources().getString(R.string.Action_ About));
return true;

// بازکردن فرگمنت هلپ
case R.id.Action_Help:


FragmentManager myFragmentManager2 = getFragmentManager();
FragmentTransaction ft2 = myFragmentManager2.beginTransaction();
Fragment myFragment2 = new Help();
ft2.replace(R.id.frame_container, myFragment2);
ft2.addToBackStack(null);
ft2.commit();
setTitle(getResources().getString(R.string.Action_ Help));
return true;



default:
return super.onOptionsItemSelected(item);
}
}


برنامه درست کار می‌کند.

اگر امکان ایجاد مشکلی وجود دارد لطفاْ راهنمایی کنید.

ممنون