В руководстве по разработке фрагментов Android я вижу, что «действие может вызывать методы во фрагменте, получая ссылку на фрагмент из FragmentManager с помощью findFragmentById()
или findFragmentByTag()
».
В следующем примере показано, как получить ссылку на фрагмент, но не показано, как вызывать определенные методы во фрагменте.
Кто-нибудь может привести пример, как это сделать? Я хотел бы вызвать определенный метод во фрагменте из родительского Activity. Спасибо.
Если вы используете «import android.app.Fragment;» Затем используйте либо:
1)
Где R.id.example_fragment - это, скорее всего, идентификатор FrameLayout внутри вашего xml-макета. ИЛИ
2)
Где FragTagName - это имя, которое вы указали, когда сделали:
Если вы используете «import android.support.v4.app.Fragment;» Затем используйте либо:
1)
ИЛИ
2)
источник
Если вы используете библиотеку поддержки, вам нужно сделать что-то вроде этого:
источник
((FragmentName) getFragmentManager().findFragmentById(R.id.fragment_id)).methodName();
2. Если вы используете фрагмент библиотеки поддержки, сделайте следующее:
((FragmentName) getSupportFragmentManager().findFragmentById(R.id.fragment_id)).methodName();
источник
Я думаю, что лучше всего проверить, добавлен ли фрагмент, перед вызовом метода во фрагменте. Сделайте что-нибудь подобное, чтобы избежать нулевого исключения.
источник
От фрагмента к активности:
От активности к фрагменту:
FragmentManager fm = getSupportFragmentManager ();
Если вы добавили фрагмент через код и использовали строку тега при добавлении фрагмента, используйте вместо этого findFragmentByTag :
источник
Сначала вы создаете метод в своем
fragment
лайкев вашем
activity
вы добавляете этодобавить
onCreate()
методнаконец, вызовите метод, который вы хотите вызвать, добавьте это
попробуйте этот код
источник
источник
Я не знаю
Java
, но вC#
(Xamarin.Android) нет необходимости искать фрагмент каждый раз, когда вам нужно вызвать метод, см. Ниже:Я думаю, что
Java
вы можете сделать то же самое.источник
вы также вызываете метод фрагмента, используя интерфейс, например
сначала вы создаете интерфейс
после создания интерфейса вы реализуете интерфейс в своем фрагменте
и вы создаете ссылку на интерфейс в своей деятельности
источник
источник