【发布时间】:2023-03-18 16:09:01
【问题描述】:
来自 com.android.support:design:22.2.0 我已经实现了TabLayout
我有一个香草片段,其中 3 个在 TabLayout 中。
public class MyFragment extends Fragment impliments SyncInfo.SyncInfo {
....
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
....
}
@Override
public void synced() {
//refresh some info in the fragment!
}
}
此外,我还实现了一个 FragmentPagerAdapter 来管理 tabLayout。
public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
private String tabTitles[] = new String[] { "Tab1", "Tab2", "Tab3" };
private Context context;
public SampleFragmentPagerAdapter(FragmentManager fm, Context context) {
super(fm);
}
@Override
public int getCount() {
return PAGE_COUNT;
}
@Override
public Fragment getItem(int position) {
switch(position){
case 0:
return new MyFragment();
case 1:
return new MyFragment2();
default:
return new MyFragment3();
}
}
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
}
现在在 MainActivity:
public class MainActivity extends AppCompatActivity{
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter( new FragmentPagerAdapterApp(getSupportFragmentManager(), this) );
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(viewPager);
....
}
接下来,我定义了一些 Asynctask,在 Asynctask 的 onPostExecute 中,我想实现一种根据需要与每个片段进行通信的方法。
public class SyncInfo extends AsyncTask<Void, Void, Void> {
private final SyncResponse syncResponse;
public SyncInfo(Context context...) {
....
syncResponse = (SyncResponse) context;
}
@Override
protected Void doInBackground(Void... voids) {
...
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
progressDialog.dismiss();
syncResponse.synced();
}
public interface SyncResponse{
void synced();
}
}
我尝试通过 AsyncTask 中定义的接口来实现这一点,并在片段中实现了方法,但这不起作用。有没有人对如何在使用 FragmentPageAdapter 创建的片段中传递信息/触发方法有任何想法?
【问题讨论】:
标签: android android-fragments android-asynctask android-viewpager android-design-library