NẾU BẠN CẦN THỰC HIỆN CÁC BIỆN PHÁP ĐỊNH VỊ NĂNG ĐỘNG, HÃY LÀM VIỆC NÀY
Có rất nhiều câu trả lời (hầu hết được lặp lại hoặc đã lỗi thời) ở đây nhưng không có câu trả lời nào trong số chúng giải quyết một nhu cầu rất phổ biến: chuyển động các đối số khác nhau đến Fragment được tải vào tab .
Bạn không thể chuyển động các đối số khác nhau vào Fragment đã tải bằng cách sử dụng setSelectedItemId(R.id.second_tab)
, điều này kết thúc bằng cách gọi static OnNavigationItemSelectedListener
. Để khắc phục hạn chế này, tôi đã kết thúc việc này trong của tôi MainActivity
có chứa các tab:
fun loadArticleTab(articleId: String) {
bottomNavigationView.menu.findItem(R.id.tab_article).isChecked = true // use setChecked() in Java
supportFragmentManager
.beginTransaction()
.replace(R.id.main_fragment_container, ArticleFragment.newInstance(articleId))
.commit()
}
Các ArticleFragment.newInstance()
phương pháp được thực hiện như bình thường:
private const val ARG_ARTICLE_ID = "ARG_ARTICLE_ID"
class ArticleFragment : Fragment() {
companion object {
/**
* @return An [ArticleFragment] that shows the article with the given ID.
*/
fun newInstance(articleId: String): ArticleFragment {
val args = Bundle()
args.putString(ARG_ARTICLE_ID, day)
val fragment = ArticleFragment()
fragment.arguments = args
return fragment
}
}
}
BottomNavigationView
không thực hiện bất kỳ lưu trạng thái nội bộ nào. Có thể mong đợi điều này sẽ được bao gồm trong một bản cập nhật trong tương lai. Bản sao (với một số thông tin khác) tại đây: stackoverflow.com/questions/40236786/…