Как сохранить состояние модели в MVP и Kotlin? - PullRequest
0 голосов
/ 07 октября 2018

Я реализовал базовый MVP, в котором модель имеет набор сообщений, которые отображаются круговым способом для пользователя при касании экрана.Каждое сообщение инкапсулируется в класс State и передается в реализацию CircularModel.

Это код Viewer, который я использовал для создания экземпляра модели и презентатора (это законно, что они создаются Viewer?), а также раздел для восстановления состояния модели:

class MainActivity : AppCompatActivity(), ViewMVC {

    private lateinit var presenter: Presenter
    private lateinit var model : Model

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        model = if(savedInstanceState == null ) { CircularModel(LinkedList<State>(Arrays.asList(
                State("First"),
                State("Second"),
                State("Third"),
                State("Fourth"),
                State("Fifth")

        )))
        } else {
            savedInstanceState.getParcelable<Model>("model")
        }
        presenter = PresenterImpl(this, model)
    }
    // Rest of Viewer's code...
}

Поскольку я хочу сохранить состояние CirciularModel, я сделал это @Parcelize:

@Parcelize
class CircularModel constructor(var states: @RawValue Deque<State>?) : Model, Parcelable {
    ...
}

Тем не менее, таким образом у меня есть предупреждение о несоответствии типов Model и Model?.Однако, если я объявляю private lateinit var model : Model?, я получаю сообщение об ошибке, что lateinit не может быть использован с типами, допускающими обнуляемость.

Как я могу решить эту проблему?Что-то не так в реализации шаблона?

1 Ответ

0 голосов
/ 08 октября 2018

вы не можете использовать lateinit с Variable?.Вы можете прочитать документацию из this

Вы можете создать private model:Model? = null, поэтому модель может быть нулевой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...