这是DragFrame.class代码中的函数:
public void setFragment(FragmentManager fm, Fragment fragment) {
fm.beginTransaction().add(R.id.frame_drag, fragment).commitAllowingStateLoss();
}
DragFrame.class是用于启用拖动框的自定义视图。然后在我的activity_main.xml中添加了这个自定义视图:
<com.android.example.exercise.Drag.DragFrame
android:id="@+id/drag_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
在我的MainActivity.class中,输入以下代码:
dragFrame = (DragFrame) findViewById(R.id.drag_frame);
dragFrame.setFragment(getSupportFragmentManager(), new DragFragment());
dragFrame.setOnDragListener(this);
dragFrame.close();
但是发生了错误,错误内容如下:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.android.example.exercise.Drag.DragFrame.setFragment(androidx.fragment.app.FragmentManager, androidx.fragment.app.Fragment)' on a null object reference
at com.android.example.exercise.activities.MainActivity.onCreate(MainActivity.java:78)
第78行是dragFrame.setFragment(getSupportFragmentManager(), new DragFragment);
。我的代码有什么问题?我试图将代码放在MainActivity.class中:
if (dragFrame != null && getSupportFragmentManager() != null) {
dragFrame.setFragment(getSupportFragmentManager(), new DragFragment());
dragFrame.setOnDragListener(this);
dragFrame.close();
}
但这是行不通的;我该如何解决此代码?
答案 0 :(得分:4)
dragFrame
是一个空值,您正在playFragment
上进行测试,请重新读取错误
com.android.example.exercise.Drag.**DragFrame**.setFragment(FragmentManager, Fragment)' on a null object reference
执行此操作:
if (dragFrame != null && getSupportFragmentManager() != null) {
dragFrame.setFragment(getSupportFragmentManager(), new DragFragment());
dragFrame.setOnDragListener(this);
dragFrame.close();
}