创建一个抽象类的Fragment, 然后子Fragment复用抽象类
abstract class AbstactFragment() : Fragment() {
val viewModel: AbstactViewModel by inject()
private lateinit var binding: AbstactFragmentBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?,
): View? {
binding = IssueBasicFragmentBinding.inflate(inflater, container, false)
return binding.root
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
binding.carIssueSubMessageTv.visibility = View.GONE
if (getLeftButtonContent() == "") {
binding.carIssueButtonLeft.visibility = View.GONE
binding.carIssueButtonRight.visibility = View.GONE
} else {
binding.carIssueButtonLeft.text = getLeftButtonContent()
binding.carIssueButtonRight.text = getRightButtonContent()
binding.carIssueButtonLeft.setOnClickListener { onLeftButtonClick() }
binding.carIssueButtonRight.setOnClickListener { onRightButtonClick() }
}
binding.issueImage.setImageDrawable(getIssueImage())
binding.carIssueMessageTv.text = getIssueMessage()
if (getIssueSubMessage() != "") {
binding.carIssueSubMessageTv.visibility = View.VISIBLE
binding.carIssueSubMessageTv.text = getIssueSubMessage()
}
VibratorUtils.vibrate(context)
}
abstract fun onLeftButtonClick()
abstract fun onRightButtonClick()
abstract fun getLeftButtonContent(): String
abstract fun getRightButtonContent(): String
abstract fun getIssueImage(): Drawable
abstract fun getIssueMessage(): String
abstract fun getIssueSubMessage(): String
}
参考链接:Create BaseFragment and extend this Fragment in ChildFragment