我尝试在按下顶部工具栏的后退按钮后获得操作
class TagsFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
(activity as AppCompatActivity?)?.supportActionBar?.title = "$selectedItemText Tags"
(activity as AppCompatActivity?)?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
// This callback will only be called when MyFragment is at least Started.
val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {
Log.d(InTorry.TAG, "TagsFragment: back BTN Pressed")
}
}
}
不幸的是,它不记录任何东西
我发现我应该添加OnBackPressedCallback,但它不起作用:
class TagsFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val selectedItemText = arguments?.getString("selectedItemText")//get arguments
(activity as AppCompatActivity?)?.supportActionBar?.title = "$selectedItemText Tags"
(activity as AppCompatActivity?)?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
(activity as AppCompatActivity?)?.onBackPressedDispatcher?.addCallback(
this,
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
Log.d(InTorry.TAG, "Fragment back pressed invoked")
// Do custom work here
// if you want onBackPressed() to be called as normal afterwards
if (isEnabled) {
isEnabled = false
requireActivity().onBackPressed()
}
}
}
)
}
亲切的问候杰克
put this in onCreate method
getActionBar().setDisplayHomeAsUpEnabled(true);
//and then override this method and find id.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我知道有时候当android只是弃用他们的on Event函数是很痛苦的,无论如何这是你的代码:
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity().onBackPressed();
}
});
你可以删除onClickListener接口并按你想要的方式添加快捷方式,像这样:
toolbar.setNavigationOnClickListener {
requireActivity().onBackPressedDispatcher.onBackPressed()
}
应该可以正常工作
谢谢大家我现在使用的代码:
- 对于设备返回按钮,在活动onCreate()
类HomeActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
setSupportActionBar(findViewById(R.id.toolbar))
supportActionBar?.setDisplayHomeAsUpEnabled(true)
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
Log.d(InTorry.TAG,"device back btn click")
//finish()
}
})
工具栏后退按钮箭头-现在我知道它像一个大菜单
override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { android.R.id.home -> {// this is my back button - simply home Log.d(InTorry.TAG,"Toolbar Back BTN Click") ... } R.id.top_menu_settings -> { Log.d(InTorry.TAG,"top_menu_settings click") true } R.id.top_menu_logout -> { Log.d(InTorry.TAG,"top_menu_logout click") Firebase.auth.signOut() gotoLogin() true } else -> super.onOptionsItemSelected(item) } }