2012-02-22 4 views
2

У меня есть FragmentActivity с FragmentPagerAdapter, который содержит несколько объектов Фрагмента, через которые я могу скользить по горизонтали.Элементы доступа в FragmentActivity из объекта фрагмента

Мне было интересно, могу ли я получить доступ к элементу ("elementToBeChanged") в FragmentActivity из объекта Fragment? Я хотел бы передать String из класса Fragment в элемент TextView, который находится в объекте FragmentActivity.

public class GalleryPagerActivity extends FragmentActivity implements OnClickListener { 

private TextView elementToBeChanged; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    super.setContentView(R.layout.gallery_pager); 

    elementToBeChanged = (TextView) findViewById(R.id.tvTop); 
    elementToBeChanged.setOnClickListener(this); 

} 
} 

Как мне это сделать? Элемент TextView должен обновляться каждый раз, когда объект Фрагмент появляется (со щелчком).

Это должно выглядеть примерно так:

public class GalleryFragment extends Fragment { 

private FragmentActivity fa; 
private LinearLayout ll; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    fa = super.getActivity(); 

    ll = (LinearLayout) inflater.inflate(R.layout.gallery_fragment, container, false); 
... 
// //////// 
// UPDATE THE "TextView elementToBeChanged" object in the parent FragmentActivity class HERE WHENEVER THIS FRAGMENTS BECOMES ACTIVE/VISIBLE... 
// //////// 

    return ll; 
} 

ответ

10

В вашем GalleryPagerActivity создать функцию, как updateTextView (строка текста). Эта функция устанавливает значение TextView независимо от входного значения. Затем в вашем GalleryFragment просто вызовите эту функцию с текстом, который будет отображаться следующим образом:

((GalleryPagerActivity)getActivity()).updateTextView("my text"); 
+0

Спасибо! Это здорово! –

+0

И что я могу сделать для противоположной ситуации? Я хочу обновить элемент в фрагменте, от фрагментации. Я перешел по этой ссылке: http://stackoverflow.com/questions/18486952/get-id-of-textview-in-fragment-from-fragmentactivity-in-viewpager ;;;;; Но они сказали: «Не создавайте новый объект каждый раз, когда вы устанавливаете текст. Используйте тот же объект-фрагмент, который вы используете для просмотра пейджера». Как я могу получить доступ к этому фрагменту? Поэтому я последовал этой ссылке: http://stackoverflow.com/questions/14035090/how-to-get-existing-fragments-when-using-fragmentpageradapter ;;;; Но я не знаю, что делать сейчас! –

+0

См. Мой родственный вопрос: http://stackoverflow.com/questions/24833912/refresh-fragment-ui-from-fragmentactivity –