以下流程图代表我的课程。有三个类,
主类包含一个水平滚动视图,其中有两个片段作为其子节点(左右适配器)
左侧适配器有一个与右侧适配器连接的接口。
接口的函数/方法驻留在主类
中 在左侧适配器内部,正在调用右侧适配器和接口。我的问题是如何从左侧适配器中调用正确的适配器,因为我不断获取空指针异常
我所做的是在主类中初始化正确的适配器,将其存储在静态变量中,并从左侧适配器调用静态变量。
答案 0 :(得分:0)
如果我没有弄错的话,你在这里想要实现的是“通信器”模式,想法是,你有2个片段,你想在两个片段之间建立某种类型的通信,但如果你直接从另一个片段调用一个片段会使它们依赖并且彼此密切相关。所以,你要在其中一个片段中创建一个公共内部接口,然后让“Main Class”实现该接口,然后在你实现的方法中调用另一个片段,这样,主类充当两者之间的中继片段,这里重要的是2片段不知道或不关心其他片段的存在。只要你实现一个“中间人”来在两个片段之间进行中继,那么每件事都应该是好的。所以简而言之,让你的主类实现你在片段中创建的接口,然后在实现的方法中调用另一个片段。
更新:
重写onAttach()
方法,然后尝试使用活动实例中的传递并将其强制转换为接口,然后从您的片段中调用已实现的方法
private InnerInterface innerInterface;
public void onAttach(Activity activity)
{
try
{
innerInterface = (InnerInterface)activity;
}
catch (ClassCastException e)
{
// thrown if this activity did not implement the InnerInterface
}
}
然后在片段中创建内部接口的某个地方,通过Main Class调用实现的方法,如innerInterface.implemetedMethod()
。我希望你能理解这一点。
答案 1 :(得分:0)
在左侧适配器中,创建一个Interface对象的null对象(在其中创建一个方法以返回正确的适配器getRightAdapter())并在从主类创建对象(在构造函数或新方法中)时分配此接口对象(实现接口)。现在在主类中,实现该方法返回正确适配器的对象(主类必须具有右适配器的对象)。现在,无论您希望从左侧适配器访问正确的适配器,只需调用此interfaceObject.getRightAdapter();
这也可以反之亦然
希望这会对你有所帮助