0

こんにちは、すべて!

TabMenuに問題があります。下にGIFが掲載されています.GIFはどのように動作しているのか正しく表示されません。それは、コードに仕組み

タブメニューandroid - 正しいコールフラグメントでない

MainActivity(ViewPager、TabsLayout) - > FragmnetAdapter
そのでなければなりませんどのように
(タブレイアウトの場合): "ホーム"(HomeFragment)、 "歴史"(HistoryFragment) 、「場所」「ホーム」で(PlacesFragment)
今その開始
「ホーム」が、とコール「Hstory」の「歴史」は
「場所」と呼ぶが、コードで私が見るのdidntを開始いくつかの問題が私を助けることができます、

Show's problem

をここで:)してくださいコードです:
MainActivity:

public class MainActivity extends AppCompatActivity { 

@BindView(R.id.appToolbarMainTabs) 
Toolbar appToolbar; 
@BindView(R.id.tabLayoutTabs) 
TabLayout tabs; 
@BindView(R.id.viewPager) 
ViewPager viewPager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ButterKnife.bind(this); 
    setSupportActionBar(appToolbar); 
    setupViewPager(viewPager); 
    tabs.setupWithViewPager(viewPager); 
} 

// Add Fragments to Tabs 
private void setupViewPager(ViewPager viewPager) { 
    FragmentTabsAdapter adapter = new FragmentTabsAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new HomeFragment(), getString(R.string.home_tab)); 
    adapter.addFragment(new HistoryFragment(), getString(R.string.history_tab)); 
    adapter.addFragment(new PlacesFragment(), getString(R.string.places_tab)); 
    viewPager.setAdapter(adapter); 
}} 


FragmentAdapter:

public class FragmentTabsAdapter extends FragmentPagerAdapter { 

private final List<Fragment> mFragmentList = new ArrayList<>(); 
private final List<String> mFragmentTitleList = new ArrayList<>(); 

public FragmentTabsAdapter(FragmentManager manager) { 
    super(manager); 
} 

@Override 
public Fragment getItem(int position) { 
    return mFragmentList.get(position); 
} 

@Override 
public int getCount() { 
    return mFragmentList.size(); 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    return mFragmentTitleList.get(position); 
} 

public void addFragment(Fragment fragment, String title) { 
    mFragmentList.add(fragment); 
    mFragmentTitleList.add(title); 
}} 



ホーム&歴史& PlaceFragment私はそう思います:)
おかげで多くのことを必要としないでください!:)

+0

私はあなたの 'PlacesFragment'にProgressDialogを表示していると仮定していますか? PagerAdapterが動作する方法は、次にスワイプできるフラグメントをプリロードすることです。そのため、 'HistoryFragment'に行くと、 'PlacesFragment'も作成されます。 ProgressDialogは推奨されていない動作パターンですが、ProgressBarをビューにインラインで配置し、読み込みが完了した後でビューを切り替えるのが最適です。 – AChez9

+0

@ AChez9はい、あなたは正しいですが、私はインラインProgressBarを使いたくありません。もし私が理解すれば、それはtabsMenuの正しい作業だと悲しいですか?私のコードにはいくつか問題はありませんか? –

答えて

1

タブとViewPagerはOKです、それは常に、少なくとも前回とプリロード次の断片。

フラグメントが表示され、情報がロードされているときだけ、ダイアログを表示できます。

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
    if (fragmentIsLoadingInfo()) { // implement this 
     showLoading(); // implement this 
    } 
    } 
} 

また何が起こっているかを理解するために、あなたは、たとえば、すべての3つの断片を一度にロードしたい場合は、この値を更新するViewPagerのsetOffscreenPageLimitを確認してください。その値を0に設定すると、1のように動作します。

+0

ありがとうございました、明日私はそれを試します:)そして、私は新しい情報を書くでしょう! –

関連する問題