下面的流程图表示我的类。有三个班,
main类包含一个水平滚动视图,其中两个片段作为其子片段(左、右适配器的)
左适配器具有与右适配器连接的接口。
接口的函数/方法驻留在主类中。
在左侧适配器中,调用右侧适配器和接口。
我的问题是如何从左适配器调用右适配器,因为我一直获得空指针异常。

我所做的是初始化主类中的右适配器,将其存储在一个静态变量中,并从我的左适配器调用静态变量。
发布于 2014-12-09 05:46:49
如果我没搞错的话,你在这里试图实现的是“通信器”模式,它的思想是,你有两个片段,你想在两个片段之间建立某种类型的交流,但是如果你直接从另一个片段中调用一个片段,就会使它们相互依赖和密切相关。因此,您将在其中一个片段中创建一个公共内部接口,然后让“主类”实现该接口,然后在您实现的方法中调用另一个片段,这样,主类充当两个片段之间的中继,重要的是这两个片段不知道或不关心另一个片段的存在。只要你实现一个“中间人”在两个片段之间传递,那么每件事都应该是好的。因此,总之,让您的主类实现您在片段中创建的接口,然后在实现方法中调用另一个片段。
更新:
重写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
}
}然后,在创建内部接口的片段中的某个地方,通过主类调用实现的方法,如这个innerInterface.implemetedMethod()。我希望你能理解。
发布于 2014-12-09 06:32:13
在左侧适配器中,创建接口的空对象(在其中创建一个方法以返回右适配器getRightAdapter()),并在从主类(实现接口)创建对象(在构造函数中或在新方法中)时分配这个接口对象。现在,在main类中,实现该方法以返回右适配器的对象(主类必须具有右适配器的对象)。现在,在您希望从左侧适配器访问右适配器的地方,只需调用这个interfaceObject.getRightAdapter();
这也可以做-反之亦然。
希望这能帮到你
https://stackoverflow.com/questions/27372183
复制相似问题