为什么我的FrameLayout fragment_container为null?

时间:2016-05-18 22:37:33

标签: android android-fragments nullpointerexception

正如Android Developer's Guide所述,我以编程方式创建了一个FrameLayout,用作fragment_container Fragment个经常被替换的NullPointerException。我遇到一个public void onClick(View v) { // Check that the activity is using the layout version with // the fragment_container FrameLayout if (findViewById(R.id.fragment_container) != null) { // Create a new Fragment to be placed in the activity layout BlankFragment firstFragment = new BlankFragment(); // Add the fragment to the 'fragment_container' FrameLayout getSupportFragmentManager().beginTransaction() .add(R.id.fragment_container, firstFragment.newInstance("","")).commit(); blankFragment.setThumbnail(thumbnails.get(finalI).getDrawable()); } else { FrameLayout frameLayout = (FrameLayout) findViewById(R.id.fragment_container); BlankFragment blankFragment = new BlankFragment(); getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, blankFragment).commit(); blankFragment.setThumbnail(thumbnails.get(finalI).getDrawable()); } ,说我试图在空指针上调用一个方法,但我不知道我应该如何解决这个问题。有什么想法吗?

有问题的代码

public static BlankFragment newInstance(String param1, String param2) {
    BlankFragment fragment = new BlankFragment();
    Bundle args = new Bundle();
    args.putString(ARG_PARAM1, param1);
    args.putString(ARG_PARAM2, param2);
    fragment.setArguments(args);
    return fragment;
}

BlankFragment.newInstance()

    <FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/horizontal_scroll"></FrameLayout>

问题中的FrameLayout

{{1}}

2 个答案:

答案 0 :(得分:0)

您已经定义了一个您未正确使用的静态方法BlankFragment.newInstance()。相反,您需要使用new BlankFragment()创建片段。这会导致您访问自getArguments()默认返回null以来未设置的参数的状态。

同时致电firstFragment.newInstance("","")并不是一个正确的方法,也就是你要做的事情。您不需要也不应该创建一个新实例来调用静态方法。只需直接BlankFragment.newInstance("","")

答案 1 :(得分:0)

我有一个类似的例子,我动态添加片段,并且在得到解决方案之前得到了nullpointer异常或classexception错误。

检查出来:

calling a method from a fragment inside a mainactivity