这些代码片段有什么区别?

时间:2013-11-01 11:09:15

标签: android android-fragments

有谁能告诉我这两个代码之间的主要区别是什么?

代码1:

       Fragment fragment = new NaviagtionFragment();
                fragmentTransaction.replace(R.id.pager, fragment);
                fragmentTransaction.commit();

代码2:

NavigationFragment fragment = new NavigationFragment();
                fragmentTransaction.replace(R.id.pager, fragment);
                fragmentTransaction.commit()

2 个答案:

答案 0 :(得分:3)

两个选项都会实例化NavigationFragment并将其替换为pager内的一个。所以在运行期间完全没有区别。

唯一的区别在于编译时的方法/实例变量可见性。

声明

Fragment fragment

您将看不到NavigationFragment的自定义方法/实例变量。但是,如果你没有对fragment做任何其他事情,那么第一个选项就完全正常了。

答案 1 :(得分:3)

在第一种情况下,您将对象分配给基类,在第二种情况下分配给派生类。主要区别在于您无法访问第一种情况下的派生方法和属性,只能访问基类型中的方法和属性(没有强制转换)