Android Studio 1.1 Beta 4
你好,
我期待下面的一些源代码,但我不明白其背后的原因。我能理解这部分
ActionBarDrawerToggle mActionBarDrawerToggle =
new ActionBarDrawerToggle(getActivity(), mDrawerLayout, toolbar, R.string.open, R.string.close)
使用带有5个参数的构造函数创建ActionBarDrawerToggle的新实例。
令人困惑的部分是为什么括号之后,我之前从未见过。这是做某事的捷径吗?:
{
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
}
};
完成:
private void init() {
ActionBarDrawerToggle mActionBarDrawerToggle =
new ActionBarDrawerToggle(getActivity(), mDrawerLayout, toolbar, R.string.open, R.string.close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
}
};
最佳答案
ActionBarDrawerToggle实现具有抽象方法的DrawerLayout.DrawerListener。这意味着您必须定义它们。
ActionBarDrawerToggle确实定义了它们本身,但是您可以在构造函数之后在{}
中覆盖它们。实际上,您正在创建ActionBarDrawerToggle的匿名子类。 (没有名字的班级)
您可以在Java documantation中阅读
关于java - 使用一些令人困惑的代码初始化ActionBarDrawerToggle,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28498211/