簡體   English   中英

從另一個調用類的對象

[英]Calling object of a class from another

下面的流程圖代表了我的課程。 一共有三堂課

  • 主班
  • 左適配器
  • 右適配器

主類包含一個水平滾動視圖,其中有兩個片段作為其子級(左右適配器的)

左適配器具有與右適配器連接的接口。

接口的功能/方法位於主類中

在左適配器內部,同時調用右適配器和接口。

我的問題是如何從左側適配器cos調用右側適配器,而我不斷收到空指針異常

我所做的是在主類中初始化了正確的適配器,並將其存儲在靜態變量中,並從我的左側適配器中調用了靜態變量。

如果我沒記錯的話,您要在此處實現的目標稱為“ Communicator”模式,即您有兩個片段,您希望在兩個片段之間建立某種類型的通信,但是如果您直接調用一個彼此之間的碎片會使它們相互依存並且彼此密切相關。 因此,您將在其中一個片段中創建一個公共內部接口,然后讓“ Main Class”實現該接口,然后在您實現的方法內部,調用另一個片段,這樣,主類將充當兩者之間的中繼片段,這里重要的是這兩個片段不知道或不在乎另一個片段的存在。 只要實現一個“中間人”在兩個片段之間進行中繼,那么每件事都應該是好的。 因此,總而言之,讓您的主類實現您在片段中創建的接口,然后在已實現的方法內調用另一個片段。

更新:

重寫onAttach()方法,然后嘗試使用在活動實例中傳遞的內容並將其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() 我希望這是您可以理解的。

在左適配器中,創建Interface的空對象(在其中創建一個方法以返回右適配器getRightAdapter()),並從主類(實現接口)創建對象(在構造函數或新方法中)時分配此接口對象。 現在在主類中,實現該方法以返回右側適配器的對象(主類必須具有右側適配器的對象)。 現在,無論您想從左適配器訪問右適配器的任何地方,都只需調用此interfaceObject.getRightAdapter();即可。

反之亦然

希望這個能對您有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM