问题:片段onResume()在ViewPager片段实际可见之前被触发.
例如,我有2个片段与ViewPager和FragmentPagerAdapter.第二个片段仅供授权用户使用,我需要让用户在片段可见时登录(使用警告对话框).
但是ViewPager当第一个片段可见时创建第二个片段,以便缓存第二个片段,并在用户开始滑动时使其可见.
因此,onResume()事件在第二个片段变为可见之前就被触发了.这就是为什么我试图找到一个事件,当第二个片段变得可见时,它会在适当的时刻显示一个对话框.
如何才能做到这一点?
我使用以下方法通过显示/隐藏它们来切换片段(在我的NavigationDrawer中).
protected void showFragment(int container, Fragment fragment, String tag, String lastTag, boolean addToBackStack ) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
if ( lastTag != null && !lastTag.equals("")) {
Fragment lastFragment = fragmentManager.findFragmentByTag( lastTag );
if ( lastFragment != null ) {
transaction.hide( lastFragment );
}
}
if ( fragment.isAdded() ) {
transaction.show( fragment );
}
else {
transaction.add( container, fragment, tag );
}
if ( addToBackStack ) {
transaction.addToBackStack( tag );
}
transaction.commit();
// set the active …Run Code Online (Sandbox Code Playgroud) onResume()当我们在片段之间切换多次时,不会调用方法.那么,有没有更好的方法来处理恢复操作?
我的活动:
TextView title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Overview overview = new Overview();
setContentView(R.layout.activity_second);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.mycontainer, overview)
.commit();
}
Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar);
//Some more code
title = (TextView) toolbar.findViewById(R.id.screentitle);
title.setText("Overzicht");
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.nav_menu_overview:
title.setText("Overzicht");
getSupportFragmentManager().beginTransaction().replace(R.id.mycontainer, new Overview()).addToBackStack(null)
.commit();
break;
case R.id.nav_menu_favourites:
title.setText("Favorieten");
getSupportFragmentManager().beginTransaction().replace(R.id.mycontainer, new Favourites()).addToBackStack(null)
.commit();
break;
case R.id.nav_menu_profile:
title.setText("Profiel");
getSupportFragmentManager().beginTransaction().replace(R.id.mycontainer, new Profile()).addToBackStack(null)
.commit();
break;
}
Run Code Online (Sandbox Code Playgroud)
因此,现在,如果我使用菜单更改片段,标题就会更改。但是,如果我使用android后退按钮,则标题不会变回来。每当使用后退按钮时,如何更改标题?