【发布时间】:2019-11-28 00:27:01
【问题描述】:
我正在尝试从 Android Studio 的底部导航活动模板自定义片段类和活动类以生成自定义操作栏,但是当我在模拟器上运行应用程序时自定义操作栏没有出现。
这是带有initializeCustomActionBar() 方法的自定义活动类:
class CountriesActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_countries)
val navView: BottomNavigationView = findViewById(R.id.nav_view)
navView.setItemIconTintList(null);
val navController = findNavController(R.id.nav_host_fragment)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
val appBarConfiguration = AppBarConfiguration(
setOf(
R.id.navigation_england, R.id.navigation_scotland, R.id.navigation_wales, R.id.navigation_nireland
)
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
}
fun initializeCustomActionBar() {
val actionBar: android.app.ActionBar? = getActionBar()
actionBar?.displayOptions = DISPLAY_SHOW_CUSTOM
actionBar?.setCustomView(R.layout.custom_action_bar)
actionBar?.setDisplayShowCustomEnabled(true)
actionBar?.show()
}
}
这是调用initializeCustomActionBar()方法的自定义片段类:
class EnglandFragment : Fragment() {
private lateinit var englandViewModel: EnglandViewModel
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
englandViewModel =
ViewModelProviders.of(this).get(EnglandViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_england, container, false)
val textView: TextView = root.findViewById(R.id.text_england)
englandViewModel.text.observe(this, Observer {
textView.text = it
var mContext : FragmentActivity? = FragmentActivity()
mContext = this!!.getActivity() as CountriesActivity
mContext.initializeCustomActionBar()
})
return root
}
}
【问题讨论】:
标签: android android-studio kotlin android-actionbar