我是 Andoid 开发的新手,我创建了一个用于以编程方式替换 fragment 的代码段。
我关注了 guide on android developers .
我创建了一个名为 selectFrag
的方法并在单击按钮时触发它:
public void selectFrag(View view)
{
Fragment fr;
if(view == findViewById(R.id.showsecond)) {
fr = new secondfragment();
} else {
fr = new firstfragment();
}
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_place,fr);
ft.addToBackStack(null);
ft.commit();
}
代码完美运行,我理解除了 addToBackStack(null)
之外的所有内容。
我试验了一下,了解到这个方法是为了将 fragment 添加到后退按钮的堆栈中,这样如果我们点击后退按钮,它不会离开屏幕并显示之前的工作。
但是,我不明白 null
在这里显示的是什么。我在网上搜索但我只知道它是一个 TAG
并且我们可以使用 something like this .
所以,我的问题很简单:这里的null
是什么意思?或者 null
做什么?
(抱歉我的英语不好。)
最佳答案
来自 documentation ,很明显:
public abstract FragmentTransaction addToBackStack (String name)
Add this transaction to the back stack. This means that the transaction will be remembered after it is committed, and will reverse its operation when later popped off the stack.
参数
name // An optional name for this back stack state, or null.
因此您的参数是可选的,代表 fragment 的名称。
如果您只想将此事务添加到返回堆栈并且以后不需要访问它,那么您可以将 null
作为名称。
在此上下文中,null
用简单的英语表示“我不需要此 fragment 的名称”。这就是为什么它说名称是可选的。如果您确实输入了一个名称,您以后可以使用该名称。如果你放一个 null
就意味着“将这个 fragment 添加到返回堆栈,我不再需要它了”。
名称的使用是为了识别该特定 fragment 。这可能很有用,例如,如果您想从 FragmentManager
获取该 fragment :
addToBackStack (FRAGMENT_NAME);
getFragmentMangager().findFragmentByTag(FRAGMENT_NAME);
关于java - addToBackStack(null) 中的 null 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25821741/