请教怎么判断 Fragment BackStack 为空?

=10_01= 2015-08-28 04:48:57
本来想使用 getFragmentManager().getBackStackEntryCount() 来判断,但当 count 为 0 时,调用此方法程序就崩掉了,官方有没有提供判断的方法
...全文
259 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
=10_01= 2015-09-02
  • 打赏
  • 举报
回复
引用 8 楼 e491288767 的回复:
[quote=引用 7 楼 Li_Jun__ 的回复:] [quote=引用 6 楼 e491288767 的回复:] 你提问的问题有概念错误。你说的backstack是其宿主Activity管理的,不是Fragment的。置于崩溃,我猜测是 count 为 0 时, getFragmentManager()为空吧。

ActionBar bar = getActivity().getActionBar();
bar.setCustomView(R.layout.xxx);
bar.setDisplayShowCustomEnabled(true);
bar.setDisplayShowHomeEnabled(false);
	
View barView = bar.getCustomView();
TextView textView = (TextView) barView.findViewById(R.id.xxx);
textView.setOnClickListener(new OnClickListener() {
			
	@Override
	public void onClick(View v) {
		if (getFragmentManager().getBackStackEntryCount() >= 1) {
			getFragmentManager().popBackStack();
		}
	}
});
类 extends Fragment 
当 count 不为 0 时能点击 那是不是判断下:
getFragmentManager() != null
[/quote] 你这样试试: if(getFragmentManager() != null){ if (getFragmentManager().getBackStackEntryCount() >= 1) { getFragmentManager().popBackStack(); } } 不行的话,你在其宿主Activity试试这个回退的方法[/quote] 在 Fragment 中 getActivity
引用 8 楼 e491288767 的回复:
[quote=引用 7 楼 Li_Jun__ 的回复:] [quote=引用 6 楼 e491288767 的回复:] 你提问的问题有概念错误。你说的backstack是其宿主Activity管理的,不是Fragment的。置于崩溃,我猜测是 count 为 0 时, getFragmentManager()为空吧。

ActionBar bar = getActivity().getActionBar();
bar.setCustomView(R.layout.xxx);
bar.setDisplayShowCustomEnabled(true);
bar.setDisplayShowHomeEnabled(false);
	
View barView = bar.getCustomView();
TextView textView = (TextView) barView.findViewById(R.id.xxx);
textView.setOnClickListener(new OnClickListener() {
			
	@Override
	public void onClick(View v) {
		if (getFragmentManager().getBackStackEntryCount() >= 1) {
			getFragmentManager().popBackStack();
		}
	}
});
类 extends Fragment 
当 count 不为 0 时能点击 那是不是判断下:
getFragmentManager() != null
[/quote] 你这样试试: if(getFragmentManager() != null){ if (getFragmentManager().getBackStackEntryCount() >= 1) { getFragmentManager().popBackStack(); } } 不行的话,你在其宿主Activity试试这个回退的方法[/quote] 确实 getFragmentManager() 为 null 了,加了判断后可以回退到最开始的 Fragment; 经提醒我在 Activity 中定义了一个 pop 方法,在 ActionBar 的点击事件中调用 Activity 的pop() 可以回退到 Activity 。 解决了 Activity -> Fragmetn -> Fragment 然后回到 Activity 问题
=10_01= 2015-09-01
  • 打赏
  • 举报
回复
引用 6 楼 e491288767 的回复:
你提问的问题有概念错误。你说的backstack是其宿主Activity管理的,不是Fragment的。置于崩溃,我猜测是 count 为 0 时, getFragmentManager()为空吧。

ActionBar bar = getActivity().getActionBar();
bar.setCustomView(R.layout.xxx);
bar.setDisplayShowCustomEnabled(true);
bar.setDisplayShowHomeEnabled(false);
	
View barView = bar.getCustomView();
TextView textView = (TextView) barView.findViewById(R.id.xxx);
textView.setOnClickListener(new OnClickListener() {
			
	@Override
	public void onClick(View v) {
		if (getFragmentManager().getBackStackEntryCount() >= 1) {
			getFragmentManager().popBackStack();
		}
	}
});
类 extends Fragment 
当 count 不为 0 时能点击 那是不是判断下:
getFragmentManager() != null
nergal_ 2015-09-01
  • 打赏
  • 举报
回复
引用 7 楼 Li_Jun__ 的回复:
[quote=引用 6 楼 e491288767 的回复:] 你提问的问题有概念错误。你说的backstack是其宿主Activity管理的,不是Fragment的。置于崩溃,我猜测是 count 为 0 时, getFragmentManager()为空吧。

ActionBar bar = getActivity().getActionBar();
bar.setCustomView(R.layout.xxx);
bar.setDisplayShowCustomEnabled(true);
bar.setDisplayShowHomeEnabled(false);
	
View barView = bar.getCustomView();
TextView textView = (TextView) barView.findViewById(R.id.xxx);
textView.setOnClickListener(new OnClickListener() {
			
	@Override
	public void onClick(View v) {
		if (getFragmentManager().getBackStackEntryCount() >= 1) {
			getFragmentManager().popBackStack();
		}
	}
});
类 extends Fragment 
当 count 不为 0 时能点击 那是不是判断下:
getFragmentManager() != null
[/quote] 你这样试试: if(getFragmentManager() != null){ if (getFragmentManager().getBackStackEntryCount() >= 1) { getFragmentManager().popBackStack(); } } 不行的话,你在其宿主Activity试试这个回退的方法
nergal_ 2015-08-31
  • 打赏
  • 举报
回复
你提问的问题有概念错误。你说的backstack是其宿主Activity管理的,不是Fragment的。置于崩溃,我猜测是 count 为 0 时, getFragmentManager()为空吧。
=10_01= 2015-08-31
  • 打赏
  • 举报
回复
引用 1 楼 zxb3121999 的回复:
你可以建立一个List来管理Fragment
看来想在 Activity 之外管理 Fragment,只能自己维护个 Stack 了。
=10_01= 2015-08-28
  • 打赏
  • 举报
回复
引用 2 楼 u014165119 的回复:
为0不会导致崩溃,肯定是你其他代码有问题,看你的程序打印的log到底是哪里错的。
忘记了,在 Fragment 调用 popBackStack() 确实不会导致程序崩溃,我是在 ActionBar 中调用的 popBackStack() ,为0调用就崩了。
=10_01= 2015-08-28
  • 打赏
  • 举报
回复
引用 1 楼 zxb3121999 的回复:
你可以建立一个List来管理Fragment
自己建个感觉没必要,系统已经维护了一个 Stack。
StoneHui_ 2015-08-28
  • 打赏
  • 举报
回复
为0不会导致崩溃,肯定是你其他代码有问题,看你的程序打印的log到底是哪里错的。
zxb3121999 2015-08-28
  • 打赏
  • 举报
回复
你可以建立一个List来管理Fragment

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧