Несоответствие типов фрагментов Котлина - PullRequest
0 голосов
/ 09 сентября 2018

Я делаю мастер / детализацию потока в Котлине.У меня проблема с несовпадением фрагментов, потому что в одном действии мне нужен android.support.v4.app.Fragment и в другом android.app.Fragment.Я реализовал свой собственный фрагмент детали и унаследовал от android.support.v4.app.Fragment, чтобы исправить несоответствие в транзакции supportFragmnet из ListActivity

if (mTwoPane) {
    val fragment = GraphDetailFragment().apply {
    arguments = Bundle().apply {
        putString(GraphDetailFragment.ARG_ITEM_ID, item.id)
    }
}
supportFragmentManager
        .beginTransaction()
        .replace(R.id.graph_detail_container, fragment)
        .commit()
}

Но затем у меня возникло несоответствие в FragManager из DetailActivity

val fragment = GraphDetailFragment().apply {
            arguments = Bundle().apply {
                putString(GraphDetailFragment.ARG_ITEM_ID,
                        intent.getStringExtra(GraphDetailFragment.ARG_ITEM_ID))
            }
        }

fragmentManager.beginTransaction()
        .add(R.id.graph_detail_container, fragment)
        .commit()

и выбросы консоли:

Ни одна из следующих функций не может быть вызвана с предоставленными аргументами: public abstract fun add (p0: Fragment !, p1: String!): FragmentTransaction!определено в android.app.FragmentTransaction public abstract fun add (p0: Int, p1: Fragment!): FragmentTransaction!определено в android.app.FragmentTransaction

Есть ли простой способ как это исправить?

1 Ответ

0 голосов
/ 09 сентября 2018

Сделать DetailActivity расширить AppCompatActivity, а затем использовать supportFragmentManager в нем.

Вам также нужно исправить свою тему AppTheme в styles.xml. Убедитесь, что атрибут parent указывает на Theme.AppCompat или Theme.AppCompat.Light.

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