2013-03-05 5 views
1

Я пытаюсь сделать что-то очень простое. У меня есть 2 вкладки, один показывает информацию о породе собаки, а другой показывает список отзывов, которые люди написали, описывая породу. Я хотел бы включить количество обзоров, которые были написаны на вкладке, так что это будет выглядеть так:Изменить текст вкладки из фрагмента

Информация о породе | Отзывы (19)

Проблема в том, что мне нужно сначала загрузить указанные данные обзора, чтобы увидеть количество отзывов на вкладке.

Так что я думал, как решение было добавить закладку первой в моей BreedProfile.java (ShelockActivity)

ActionBar.Tab reviewTab= ab.newTab(); 
reviewTab.setText("Reviews"); 
mTabsAdapter.addTab(reviewTab, DogReviewFragment.class, null); 

Тогда в моем BreedProfileReviewFragment.java я бы загрузить обзоры затем обновить текст reviewTab по при этом:

getActivity().getActionBar().getTabAt(1).setText("Reviews 10"); 

Однако вышеуказанный метод не существует в соответствии с LogCat.

03-05 18:15:26.460: E/AndroidRuntime(1286): FATAL EXCEPTION: main 
03-05 18:15:26.460: E/AndroidRuntime(1286): java.lang.NoSuchMethodError: android.support.v4.app.FragmentActivity.getActionBar 

Так что мой вопрос, можно ли получить доступ к TAB Фрагмента изменить текст свойство TAB после добавления? Если да, то как я могу это достичь?

ПРИМЕЧАНИЕ:

  1. Я не могу скачать обзоры вместе с информацией о породе, так как API, разделены.

  2. BreedProfile.java Происходит из списка пород в ListActivity BreedList.java.

+1

Я понял это уже. В основном для доступа к вкладкам я должен использовать: getSherlockActivity(). GetSupportActionBar(). GetTabAt (1) .setText («Обзор (10)»); вместо того, что я использовал ранее, потому что я использую actionbarsherlock. Я надеюсь, что кто-то другой найдет это полезным. Добрый день! –

ответ

2

Вы можете установить Interface. поэтому вы можете запустить код в родительской активности фрагмента.

Создайте свой интерфейс в своем фрагменте, как показано ниже:.

public interface OnQuestionSelectedListener { 
void onQuestionSelected(int Position, boolean isFirstTime); 
} 

Реализовать это на вашей стороне материнской активности, как показано ниже:

public class YourParentActivity extends Activity implements YourFragment.OnQuestionSelectedListener{ 
     @Override 
    public void onQuestionSelected(int position, boolean isFirstTime) { 
     // your code. 
     } 
} 

вызов из вашего фрагмента, как показано ниже:

((YourParentActivityName)getActivity()).onQuestionSelected(position, true); 

(Вы можете внести изменения в код в соответствии с вашими необходимо)
Очень хорошая практика передачи всей вашей логики фрагмента его родителям, потому что я считаю, что использование фрагментов для вашей части пользовательского интерфейса и Interface предоставляют нам хороший способ передать сообщение фрагмента родительскому. Все действия у родителя и передача результата в соответствующий фрагмент.

Надеюсь, это поможет.

Смежные вопросы