несколько программно добавить фрагмент в ViewGroup - PullRequest
0 голосов
/ 05 мая 2019
  1. Добавление нескольких пользовательских групп просмотра к линейному макету в Activity.
  2. каждая пользовательская группа включает в себя фрагмент.

Проблема в том, что все фрагменты были добавлены к структуре кадра, принадлежащей первой группе просмотра

Я попробую findViewById, чтобы найти разметку кадра в каждой группе просмотра, и framelayout.getId, когда добавить фрагмент, но не работает

Активность:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val viewContainer = findViewById<LinearLayoutCompat>(R.id.container)

        val file1 = FileView(this)
        file1.initView("No.1")

        viewContainer.addView(file1)

        val file2 = FileView(this)
        file2.initView("No.2")

        viewContainer.addView(file2)
    }

ViewGroup:

class FileView(context: Context) : LinearLayoutCompat(context) {

    init {
        LayoutInflater.from(context).inflate(R.layout.custom_view, this, true)
    }

    fun initView(text: String) {
        val fragment = TestFragment.newInstance(text)
        val manager = (context as FragmentActivity).supportFragmentManager
        manager.beginTransaction().add(R.id.file_frameLayout, fragment).commit()
    }

}

Фрагмент:

class TestFragment : Fragment() {

    companion object {
        fun newInstance(title: String): TestFragment {
            val bundle = Bundle()
            bundle.putString("TITLE", title)
            return TestFragment().apply {
                arguments = bundle
            }
        }
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val view = inflater.inflate(R.layout.test_fragment, container, false)
        val title = arguments?.getString("TITLE") as String
        view.findViewById<TextView>(R.id.tvTitle).text = title
        return view
    }

}

enter image description here

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