正如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;
}
<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>
{{1}}
答案 0 :(得分:0)
您已经定义了一个您未正确使用的静态方法BlankFragment.newInstance()
。相反,您需要使用new BlankFragment()
创建片段。这会导致您访问自getArguments()
默认返回null
以来未设置的参数的状态。
同时致电firstFragment.newInstance("","")
并不是一个正确的方法,也就是你要做的事情。您不需要也不应该创建一个新实例来调用静态方法。只需直接BlankFragment.newInstance("","")
。
答案 1 :(得分:0)
我有一个类似的例子,我动态添加片段,并且在得到解决方案之前得到了nullpointer异常或classexception错误。
检查出来: