java - addToBackStack(null) 中的 null 的目的是什么?

标签 java android android-layout android-fragments

我是 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/

相关文章:

android - Firebase - 每个用户的唯一 ID

java - 插件无法在 Windows 7 64 位 Eclipse 中运行

android - 是否需要给每个Widget(TextView、LinearLayout...)一个Id?

android - 为什么每当我发送模拟 GPS 信号时模拟器就会崩溃?

java - kill -9 <PID> 后的 Tomcat 8 session 持久性

java - 无法显示横幅

java - "Variable Assignment Request"对象设计

android - 在 CircleImageView 中缩放不同大小的图像的问题

java - 检索当前用户的 child 数据: Firebase

java - 使用 JDA 将消息发送到 Discord 中的特定 channel