我将以下Java代码转换为Kotlin代码。 Android Studio不会显示任何错误消息 但结果却不同。我添加了两张模拟器结果图片 正如您所看到的,Java工作正常,并在工具栏中显示3点菜单图标。但是Kotlin代码不起作用 有人知道错误是什么吗?希望得到一些帮助。感谢。
爪哇:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
//...
setHasOptionsMenu(true);
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater menuInflater) {
menuInflater.inflate(R.menu.menu_main, menu);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
MenuItem settings = menu.findItem(R.id.settings);
MenuItem singOut = menu.findItem(R.id.sign_out);
settings.setVisible(true);
singOut.setVisible(false);
}
科特林:
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater!!.inflate(R.layout.fragment_home, container, false)
//...
setHasOptionsMenu(true)
return view
}
override fun onCreateOptionsMenu(menu: Menu?, menuInflater: MenuInflater?) {
menuInflater!!.inflate(R.menu.menu_main, menu)
}
override fun onPrepareOptionsMenu(menu: Menu?) {
val settings = menu!!.findItem(R.id.settings)
val singOut = menu.findItem(R.id.sign_out)
settings.isVisible = true
singOut.isVisible = false
}
答案 0 :(得分:0)
改变这个:
settings.isVisible = true
singOut.isVisible = false
为:
settings.visible = true
signOut.visible = true
请查看此文档以获取解释:https://kotlinlang.org/docs/reference/java-interop.html#getters-and-setters
更新:有问题的实际代码是正确的 - settings.isVisible
应该有效。
答案 1 :(得分:0)
您尝试过吗?
settings.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
signout.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);