下記のようなフラグメントを実装しています。
activity
|
|________fragmentA
| |_____fragmentA1
| |_____fragmentA2
|________fragmentB
fragmentAはFragmentFragmentPagerAdapterでフラグメントA1とA2を切り換えることができます。
fragmentA1からfragmentAに実装されたfuncメソッドを実行したいのですが、このようなことは可能でしょうか?
FragmentA.java
java
1public class FragmentA extends Fragment { 2 3 private HomeViewModel homeViewModel; 4 5 // viewPager 6 private MyPagerAdapter pagerAdapter; 7 private ViewPager mPager; 8 9 public View onCreateView(@NonNull LayoutInflater inflater, 10 ViewGroup container, Bundle savedInstanceState) { 11 12 homeViewModel = 13 ViewModelProviders.of(this).get(HomeViewModel.class); 14 View root = inflater.inflate(R.layout.fragmentA, container, false); 15 16 return root; 17 } 18 19 @Override 20 public void onActivityCreated(Bundle savedInstanceState){ 21 super.onActivityCreated(savedInstanceState); 22 23 // Instantiate a ViewPager and a PagerAdapter. 24 mPager = (ViewPager) getActivity().findViewById(R.id.pager); 25 pagerAdapter = new MyPagerAdapter(getActivity().getSupportFragmentManager()); 26 mPager.setAdapter(pagerAdapter); 27 } 28 29 @Override 30 public void onStart() { 31 super.onStart(); 32 33 } 34 35 // fragmentA1から実行したい処理 36 public void func(){ 37 } 38 39} 40
FragmentA1.java
java
1 2 3public class FragmentA1 extends Fragment { 4 private View rootView; 5 @Override 6 public void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 } 9 10 @Override 11 public View onCreateView(@NonNull LayoutInflater inflater, 12 ViewGroup container, 13 Bundle savedInstanceState) { 14 rootView = inflater.inflate(R.layout.fragmentA1, container, false); 15 16 return rootView; 17 } 18 19 @Override 20 public void onActivityCreated (Bundle savedInstanceState) { 21 super.onActivityCreated(savedInstanceState); 22 } 23 24 @Override 25 public void onStart() { 26 super.onStart(); 27 28 Button info = (Button)getActivity().findViewById(R.id.buttonInfo); 29 30 info.setOnClickListener(new View.OnClickListener() { 31 // infoボタン 32 @Override 33 public void onClick(View v) { 34 // ここでフラグメントAに実装されたfunc処理を実行したい 35 } 36 }); 37 } 38}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/03 23:27
2020/03/04 04:25