java - Activity是MainFragmentListener的一个实例,是真的吗?
问题描述
我想知道,这怎么可能。
我有带有监听器的 MainActivty 和 MainFragment:MainFragmentListener。
当然,我在 MainActivity 中实现了这个监听器作为接口。
现在我试图理解这一点:
if (context instanceof MainFragmentListener)
总是如此,这怎么可能?MainActivity 不是 MainFragmentListener 的实例。
MainFragmentListener 是一个公正的接口,而不是对象!
主要片段:
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof MainFragmentListener) {
mListener = (MainFragment.MainFragmentListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}
public interface MainFragmentListener {
void xx();
void yy();
}
活动:
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener,
MainFragment.MainFragmentListener{
public void xx(){
abc
};
public void yy(){
abc2
};
}
解决方案
这是因为instanceof
还要检查一个类是否实现了一个接口。您可以阅读文档:
instanceof 运算符将对象与指定类型进行比较。您可以使用它来测试对象是类的实例、子类的实例还是实现特定接口的类的实例。
虽然我认为instanceof
运营商名称有点误导。
推荐阅读
- java - 如何从应用层设置tomcat的relaxedQueryChars
- excel - 更换不起作用
- json - 如何在颤动中从 json 对象中读取列表?
- windows - 如何在文件浏览窗口的“文件名”下拉菜单下获取最后浏览的文件列表?
- bootstrap-4 - Blazor 服务器客户端中的引导工具提示问题
- javascript - IE 11 - 错误:[$controller:ctrlreg] 名为“xxx”的控制器未注册
- windows - 替代使用 findstr
- r - 百分比条形图
- python - 我需要一个正则表达式来在两个标签 python 之间找到一个短语
- python - Python 多个列表循环仅在列表之一出现异常后继续