如何在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;
}
});
}
}
我有以下 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;
}
});
}
}