Intereting Posts
Анимация CardView: поднять и развернуть по клику? Расположение Android с двумя равномерно разнесенными кнопками Как определить массив целых чисел в объявлении-стиль? Retrofit 2.0 как распечатать полный ответ json? Gradle: Как запустить пользовательскую задачу после создания библиотеки Android? Восстановление состояния в Android при использовании кнопки «вверх» Могу ли я проверять обновления подписки на Google Play полностью на сервере? Android.bluetooth.IBluetooth.createBond () не найден в 4.2.1, но работает в более ранних версиях ОС NPE при раздувании макета (попытка вызвать виртуальный метод «boolean java.lang.String.equals (java.lang.Object)» в ссылке на нулевой объект) API отпечатков пальцев для телефона android Голо быстрый просмотр прокрутки на старых устройствах Android Studio – Экспорт Android-библиотеки aar с чистым градиентом Как всегда показывать полосу прокрутки Используя VideoView, как удалить предупреждающее сообщение «не удается воспроизвести это видео»? Установить отрицательный запас на ImageView сдвигает ImageView, но не изображение

Получить фрагмент фрагмента из FragmentActivity

У меня есть FragmentActivity где я добавляю Fragment . В зависимости от ситуации я хочу получить доступ к Buttons из макета этого фрагмента и изменить их.

Что я делаю:

 View view = myFragment.getView(); Button myButton = (Button) view.findViewById(R.id.my_button); myButton.setOnClickListener(new MyClickListener()); 

Но переменная view всегда равна null .

Как я могу получить представление о деятельности?

Solutions Collecting From Web of "Получить фрагмент фрагмента из FragmentActivity"

Если вы хотите получить доступ к своему компоненту и установить некоторые данные, я предлагаю вам сделать метод внутри фрагмента следующим образом:

 import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; public class DetailFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.details, container, false); return view; } public void setSettings(){ Button button = (Button) getView().findViewById(R.id.my_button); button.setOnClickListener(new MyClickListener()); } } 

попробуй это:

 public class YourFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.your_fragment, null); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); View view = getView(); if(view != null) { view.findViewById(R.id.my_button).setOnClickListener(new MyClickListener()); } } } 

Этот код должен работать нормально. Я надеюсь, что это поможет вам.

Чтобы установить OnClickListeners во фрагменты, переопределите onViewCreated в вашем классе фрагмента.

 @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.findViewById(R.id.yourId).setOnClickListener(this); //or getActivity().findViewById(R.id.yourId).setOnClickListener(this); } 

Я пытался установить timertask для автоматической перезагрузки webview во фрагменте, и этот метод был единственным, что сработало для меня. Мой проект находится на github .

Источник: этот ответ

Когда вы инициализируете свою кнопку внутри класса, который расширяет Fragment , лучше сделать это внутри onViewCreated() . Это гарантирует, что представление уже существует.

Просто используйте метод getRootView() чтобы получить данные вашего фрагмента в Activity.

 //below block of code write in activity. EditText et = (EditText) v.getRootView().findViewById(R.id.name); Log.d("Name", et.getText().toString()); 

Name – это поле фрагмента.