如何在android中引用特定的class或接口?

How to refer to a specific class or interface in android?

我有以下 class:

public class MainActivity extends AppCompatActivity

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmit(String s) {return false;}

    @Override
    public boolean onQueryTextChange(String searchText) {
        if (searchText.length() > 0) {
            myLiveData.removeObservers(this);
        }

        return false;
    }
});

我需要向 removeObservers() 函数传递一个 LifecycleOwner 对象。使用此行时:

myLiveData.removeObservers(this);

在我的 activity 中,它工作正常,但在 onQueryTextChange() 中它失败了。如何让this指向右边class并得到对应的LifecycleOwner对象?

这与 Android 无关,但与 Java 及其工作更相关。

当您想在内部 class 中引用外部 Class 时,您将使用 OuterClassName.this。在您的情况下,它将是 MainActivity.this

public class MainActivity extends AppCompatActivity{
    public void onCreate(){
        myLiveData.removeObservers(this);
    }
}

使用内部class时,上面的代码会变成这样。

public class MainActivity extends AppCompatActivity{
    public void onCreate(){
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
            @Override
            public boolean onQueryTextSubmit(String s) {return false;}

            @Override
            public boolean onQueryTextChange(String searchText) {
                if (searchText.length() > 0) {
                    myLiveData.removeObservers(MainActivity.this);
                }

                return false;
            }
        });
    }
}