我想知道,这怎么可能。
我有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
};
}
最佳答案
层次结构中的活动高于片段接口
所以?假设将Fragment分配给MainActivity,则context instanceof
对于true
类本身-MainActivity。
您在该类上定义的任何接口(无论接口的定义写在哪里)
NavigationView.OnNavigationItemSelectedListener
MainFragment.MainFragmentListener
以及每个类和接口in the hierarchypublic class AppCompatActivityextends FragmentActivity implements AppCompatCallback, TaskStackBuilder.SupportParentable, ActionBarDrawerToggle.DelegateProvider
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.view.ContextThemeWrapper
↳ android.app.Activity
↳ android.support.v4.app.FragmentActivity