Как решить в этом NullPointerException с кодом Android? - PullRequest
0 голосов
/ 01 октября 2019

Это функция в коде 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();
    }

Но он не работает;Как я могу исправить этот код ??

1 Ответ

4 голосов
/ 01 октября 2019

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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...