fragment继承FragmentPagerAdapter,Activity获取其中某个fragment的控件
时间: 2023-06-19 17:08:53 浏览: 157
要访问Fragment中的控件,需要先获取该Fragment对象,然后通过该对象调用findViewById()方法获取控件。在FragmentPagerAdapter中,可以通过getItem()方法获取指定位置的Fragment对象。以下是示例代码:
```
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
MyFragment myFragment = (MyFragment) adapter.getItem(0);
TextView textView = myFragment.getView().findViewById(R.id.my_text_view);
```
其中,MyPagerAdapter是继承自FragmentPagerAdapter的自定义PagerAdapter,getItem()方法返回指定位置的Fragment对象。MyFragment是继承自Fragment的自定义Fragment,R.id.my_text_view是要获取的控件的ID。获取到TextView对象后,就可以对其进行操作了。
相关问题
fragment继承FragmentPagerAdapter,在Activity获取其中某个fragment的控件的代码
可以通过FragmentPagerAdapter中的getItem方法获取指定位置的Fragment实例,进而获取其中的控件。具体代码如下:
```java
public class MyAdapter extends FragmentPagerAdapter {
// Fragment集合
private List<Fragment> mFragments = new ArrayList<>();
public MyAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
mFragments = fragments;
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
}
```
在Activity中获取第一个Fragment中的某个控件:
```java
// 获取第一个Fragment中的TextView
MyAdapter adapter = new MyAdapter(getSupportFragmentManager(), fragments);
Fragment fragment = adapter.getItem(0);
TextView textView = fragment.getView().findViewById(R.id.text_view);
```
其中,R.id.text_view为需要获取的控件的id。同理,可以通过getItem方法获取其他位置的Fragment实例,进而获取其中的控件。
Activity获取其中某个fragment的控件
可以通过在Fragment中定义公共方法,在Activity中调用该方法获取Fragment中的控件。具体方式如下:
1. 在Fragment中定义公共方法,用于获取控件:
```java
public class YourFragment extends Fragment {
private TextView textView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.your_fragment_layout, container, false);
textView = view.findViewById(R.id.text_view);
return view;
}
public TextView getTextView() {
return textView;
}
}
```
2. 在Activity中获取该Fragment实例,并调用其公共方法获取控件:
```java
YourFragment yourFragment = (YourFragment) getSupportFragmentManager().findFragmentById(R.id.your_fragment);
TextView textView = yourFragment.getTextView();
```
其中,`R.id.your_fragment` 是你在布局文件中为该Fragment指定的id。通过这种方式,你就可以在Activity中获取到该Fragment中的控件了。
阅读全文