загрузить один фрагмент дважды в одном задании с двумя вопросами из локального файла json

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

0
задан Amit 14 April 2019 в 12:47
поделиться

1 ответ

Хотя я думаю, что у вас будет несколько более подробных вопросов по мере продвижения, похоже, вам нужно общее руководство, чтобы действительно начать.

Для начала я бы предложил, чтобы вы не хотели использовать один и тот же фрагмент для каждого из двух отображаемых вами вопросов, а два отдельных экземпляра одного и того же класса фрагмента. Например, я думаю, вы хотели бы иметь что-то вроде этого:

questionOneFragment = new BaseFragment();
questionTwoFragment = new BaseFragment();

Похоже, у вас есть список вопросов, и вы просто хотите отобразить два вопроса одновременно, поэтому я думаю, что единственное состояние, которое вам нужно поддерживать - это то, что данные номера вопроса должны отображаться в questionOneFragment (questionTwoFragment должны отображать данные для вопроса в списке после второго вопроса).

Все, что вам для этого понадобится, - это одно целое число firstDisplayedQuestion, которое вы увеличиваете или уменьшаете, основываясь на щелчках по кнопкам prev и next. Вам нужно управлять границами этой переменной, чтобы она не опускалась ниже 0 или выше 1 ниже последнего элемента в вашем списке.

В вашем классе BaseFragment вам нужно иметь методы, которые устанавливают элементы пользовательского интерфейса, которые вы хотите отобразить. Затем, когда нажимается кнопка prev или next, вы соответственно обновляете firstDisplayedQuestion. Затем вы также получаете данные для вопроса в списке, соответствующем firstDisplayedQuestion, и вызываете методы настройки отображения на questionOneFragment, используя эти данные. Затем вы получаете данные для вопроса в списке, соответствующие firstDisplayedQuestion + 1, и используете эти данные для установки элементов отображения questionTwoFragment

0
ответ дан nPn 14 April 2019 в 12:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: