- findViewById во фрагменте в Android Не работает
- 5 ответов
- Android : Fragment error on getview.findviewbyid?
- 5 Answers 5
- Not the answer you’re looking for? Browse other questions tagged android view fragment or ask your own question.
- Related
- Hot Network Questions
- Subscribe to RSS
- findViewById и Fragment
- findViewById returns NULL when using Fragment
- 7 Answers 7
- findViewById во фрагменте
findViewById во фрагменте в Android Не работает
Как получить доступ к атрибуту в Activity xml ? Я хочу использовать его во фрагменте.
Например: это моя активность xml
Я хочу findViewByid ImageView в фрагменте Когда я искал решение, я получил следующее:
Но, к сожалению, у меня это не сработало.
5 ответов
Для этого вы можете использовать интерфейс:
Создайте интерфейс с именем IBtnClick с помощью одного метода void: «void onBtnClicked ();»
Использовать интерфейс в такой деятельности:
Здесь getAtivity — это наш контекст, если он не работает, используйте другой контекст области видимости.
И используйте свой метод в прослушивателе нажатия кнопки, например
Теперь в вашем фрагменте вам нужно реализовать интерфейс и
Вы можете добавить любое действие в метод Overridden.
Попробуйте этот код
ОК. У вас есть несколько вариантов.
Во-первых , вы можете получить доступ к этим переменным непосредственно в подобном фрагменте.
Вы можете получить текущую активность с помощью getActivity() , но компилятор Java не может понять, какое действие необходимо передать в MainActivity.
Во-вторых , вы можете передать свой экземпляр активности во фрагмент. Вы можете использовать конструкторы и функцию newInstance() . Вы можете прочитать это сообщение Лучшая практика для создания экземпляра нового фрагмента Android
На мой взгляд, я предпочитаю второй вариант, потому что вы гарантируете, что эти переменные включают класс активности. В некоторых устройствах возникают ошибки по первому варианту. Но второй вариант использует больше оперативной памяти, потому что вы передаете свои переменные другому классу.
Выбор остается за вами
Вы можете объявить свой TextView btn_back как статический в действии
И получить фрагмент
Используйте либо viewModel, либо интерфейсы, чтобы общаться между активностью и фрагментом. не пытайтесь отправить кнопку во фрагмент, а запускайте ее оттуда. Это предотвратит любые утечки или нулевые указатели.
Источник
Android : Fragment error on getview.findviewbyid?
I’m developing an application of a music player in fragment. Here when i used the code to get views from XML it stopped working.
Fragment code is ..
Can anyone help me find a sollution for this error .. Thank You .
5 Answers 5
You are calling getView() method before the View is created. Move the init() method in onViewCreated() .
Your fragment getView() method will be null since the view on OnCreate is not returned to activity before initializing those views.
First pass the view object to init function.
Now pass the view object to getViews() method from init function
Now use the view object to use findViewById()
getView() remains null until you do return view; in your onCreateView() and since you do init(); , which calls getViews(); , which calls getView() before return view; , it will produce NPE.
Solution can be for example moving this lines
pass the view to init() method (Ex: init(view) ) and from there pass to getViews() method (Ex: getViews(view)).
use that view in getViews() code,
You are calling init() from onCreateView(), while onCreateView() must only contain code to inflate view layout for Fragment. By this time getView() method will return null as it is not initialized.
You must move all your initialization code (init()) to methods called later in fragment lifecycle i.e. onActivityCreated().
Not the answer you’re looking for? Browse other questions tagged android view fragment or ask your own question.
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.10.15.40479
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Источник
findViewById и Fragment
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Обновление fragment из другого fragment
Добрый вечер всем!! Подскажите пожалуйста как обновить один фрагмент из другого (а именно TextView.
FindViewById
Назрел вопрос, почему в MainActivity мы пишем, например, ListView lvMain = (ListView).
FindViewById() возращает null
Добрый день! Воспроизвожу код из книги Head First Android. При получении элементов при помощи.
FindViewByID возвращает Null
День добрый. Я в разработке андроида новичек, и застрял можно сказать в самом начале. Имеется.
у меня вот так
крашится при запуске
Добавлено через 10 минут
Причем именно на получении id
Добавлено через 9 минут
Инициализация view элементов findViewById
Здравствуйте. такой вопрос постоянно приходится в методах указывать findViewById на используемые.
RelativeLayout findViewById return null
Я что-то не пойму никак.. почему RelativeLayout возвращает не ссылку на TextView, а null? .
Какую роль выполняет findViewById в андроиде?
ребята! подскажите пожалуйста, какую роль выполняет findViewById в андроиде? пример VideoView.
FindViewByID возвращает Null производного класса View
Возвращает null в v, что может быть. если использовать родной SurfaceView все ОК. Кнопку находит.
Источник
findViewById returns NULL when using Fragment
I’m new to Android developing and of course on Fragments.
I want to access the controls of my fragment in main activity but ‘findViewById’ returns null. without fragment the code works fine.
Here’s part of my code:
The fragment:
the onCreate of MainActivity:
on this point the txtXML is null.
What’s Missing in my code or what should I do?
7 Answers 7
Try like this on your fragments on onCreateView
You should inflate the layout of the fragment on onCreateView method of the Fragment then you can simply access it’s elements with findViewById on your Activity .
In this Example my fragment layout is a LinearLayout so I Cast the inflate result to LinearLayout.
I’m late, but for anyone else having this issue. You should be inflating your view in the onCreateView method. Then override the onCreateActivity method and you can use getView().findViewById there.
You can’t access the the view of fragment in activity class by findViewById instead what you can do is.
You must have an object of Fragment class in you activity file, right? create getter method of EditText class in that fragment class and access that method in your activity.
create a call back in Fragment class on the event where you need the Edittext obj.
Eclipse menu -> Project -> Clean.
update
2) If you have 2 or more instances of ‘main’ layout, check if all of them have a view with ‘txtXML’ id
A Fragment is a piece of an application’s user interface or behavior that can be placed in an Activity. Interaction with fragments is done through FragmentManager, which can be obtained via Activity.getFragmentManager() and Fragment.getFragmentManager().
The Fragment class can be used many ways to achieve a wide variety of results. It is core, it represents a particular operation or interface that is running within a larger Activity. A Fragment is closely tied to the Activity it is in, and can not be used apart from one. Though Fragment defines its own lifecycle, that lifecycle is dependent on its activity: if the activity is stopped, no fragments inside of it can be started; when the activity is destroyed, all fragments will be destroyed.
Источник
findViewById во фрагменте
Я пытаюсь создать ImageView во фрагменте, который будет ссылаться на элемент ImageView, который я создал в XML для фрагмента. Однако findViewById метод работает, только если я расширяю класс Activity. Есть ли в любом случае, что я могу использовать его также во Fragment?
У findViewById метода есть ошибка, которая утверждает, что метод не определен.
Используйте getView () или параметр View из реализации onViewCreated метода. Возвращает корневое представление для фрагмента (возвращенного onCreateView() методом) . С этим вы можете позвонить findViewById() .
Как getView() работает только после onCreateView() , вы не можете использовать его внутри onCreate() или onCreateView() методы фрагмента.
Вам нужно раздувать вид и вызов фрагмента findViewById() на View него возвращается.
Внутри Fragment класса вы получите метод переопределения onViewCreated (), в котором вы всегда должны инициализировать ваши представления, так как в этом методе вы получаете объект представления, с помощью которого вы можете найти ваши представления следующим образом:
Всегда помните , в случае фрагмента , что onViewCreated() метод не вызывается автоматически , если вы возвращаете нуль или super.onCreateView() из onCreateView() метода. Он будет называться по умолчанию в случае , если в ListFragment качестве ListFragment возврата FrameLayout по умолчанию.
Примечание: вы можете получить представление фрагмента в любом месте класса, используя getView() один раз onCreateView() успешно выполненный. т.е.
Я понимаю, что это старый вопрос, но преобладающий ответ оставляет желать лучшего.
Вопрос не ясен, что требуется imageView — мы передаем его обратно как представление или просто сохраняем ссылку на будущее?
В любом случае, если ImageView это исходит от раздутого макета, правильный способ сделать это будет:
Сначала получите вид фрагмента, а затем получите из этого вида свой ImageView.
Источник