Java 什么是;这";请参阅setNavigationItemSelectedListener中的(此)

Java 什么是;这";请参阅setNavigationItemSelectedListener中的(此),java,android,Java,Android,作为一名新的程序员,我正在学习如何实现导航抽屉,我正在检查GoogleCodeLab提供的代码,并面临一个“this”(提供的代码)。 我想知道它到底指的是什么 我已经试着用“这个”来代替我脑海中出现的任何东西,但都不起作用 DrawerLayout drawer = findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer,

作为一名新的程序员,我正在学习如何实现导航抽屉,我正在检查GoogleCodeLab提供的代码,并面临一个“this”(提供的代码)。 我想知道它到底指的是什么

我已经试着用“这个”来代替我脑海中出现的任何东西,但都不起作用

DrawerLayout drawer =  findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
        this, drawer, toolbar, R.string.navigation_drawer_open,
        R.string.navigation_drawer_close);
if (drawer != null) {
    drawer.addDrawerListener(toggle);
}
toggle.syncState();
NavigationView navigationView = findViewById(R.id.nav_view);
if (navigationView != null) {
    navigationView.setNavigationItemSelectedListener(this);
}

如果包含此代码的活动、片段或类实现了
NavigationView.OnNavigationItemSelectedListener
,则可以传递
this

以下是详细信息


这有帮助吗?

NavigationView有一个名为:

setNavigationItemSelectedListener(NavigationView.OnNavigationItemSelectedListener listener)
()

这意味着您需要在调用该方法时提供一个类型为“OnNavigationItemListener”的参数

有两种方法可以提供这个论点

  • 第一种方法是定义匿名类(或方法引用,或lambda,等等)
  • 第二种方法是实现调用此方法的类的侦听器,然后传入“this”作为参数 你的问题与第二种方法有关

    e、 g


    有关implements关键字的更多信息,请参阅

    “this”作为一个参考变量,它告诉这里需要的函数在这个当前对象中。对不起,你的解释是不可理解的。我已经知道它可以被使用,因为它已经被使用了!我想知道为什么我们要通过“这个”。它到底指的是什么?请注意,只有当您的类实现OnNavigationItemSelectedListener(因为该方法要求参数是OnNavigationItemSelectedListener的类型)时,这才起作用。尝试删除实现,将出现编译错误。
    //notice now myCustomClass is implemented as a type of "OnNavigationItemSelectedListener" (the implements keyword)
    //according to https://developer.android.com/reference/android/support/design/widget/NavigationView.OnNavigationItemSelectedListener.html
    //all implementation of OnNavigationItemSelectedListener requires 
    //a method called "onNavigationItemSelected" -> so we add that in too.
    public MyCustomClass implements NavigationView.OnNavigationItemSelectedListener{
    
        public void someMethods(){
    
            //...setting the argument to "this", means when the navigation item is selected,
            //the method onNavigationItemSelected in "MyCustomClass" will be called
            navigationView.setNavigationItemSelectedListener(this);
    
        }
    
        //this method will be called whenever navigationItem is selected
        boolean onNavigationItemSelected(MenuItem item){
           //you will do your coding on what to do when an navigationItem is selected here.
        }
    
    }