2016-09-14 29 views
0

我試圖在對話框中顯示選項卡式尋呼機視圖,但我無法初始化我的適配器類中的getSupportFragmentManager,其中 extends BaseAdapter。如果我使用MainActivity extends AppCompatActivity,則getSupportFragmentManager未顯示錯誤。這是我的代碼。請指導我。如何從擴展BaseAdaper的類中顯示對話框

public class ContactListAdapter extends BaseAdapter { 
------------ 
------------ 
slidingListItem.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      TabDialogFragment.createBuilder(ContactListAdapter.this, getSupportFragmentManager()) 
        .setTitle("Title") 
        .setSubTitle("Subtitle") 
        .setTabButtonText(new CharSequence[]{"Tab1", "Tab2"}) 
        .setPositiveButtonText("Ok") 
        .setNegativeButtonText("Cancel") 
        .setNeutralButtonText("Neutral") 
        .setRequestCode(REQUEST_TABBED_DIALOG) 
        .show(); 
     } 
    }); 

如何在我的適配器類中初始化getSupportFragmentManager()

+0

你可以給你的活動/片段使用監聽器回調,那裏你顯示對話框 –

+0

請讓我知道更多的Ram。我沒有足夠的知識來使用回調,正如你所說的。 –

+0

在適配器構造函數中傳遞OnClick偵聽器並初始化該元素,然後使用偵聽器的onClick給予u'r活動/分片的回調 –

回答

0

您可以在適配器的類中創建一個字段,並將其保存爲FragmentManager,方法是將其傳遞到適配器的構造函數中。喜歡的東西:

public class ContactListAdapter extends BaseAdapter { 

private FragmentManager mFragmentManager; 

public ContactListAdapter(FragmentManager fragmentManager) 
    mFragmentManager = fragmentManager; 
} 
------------ 
------------ 
slidingListItem.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      TabDialogFragment.createBuilder(ContactListAdapter.this, mFragmentManager) 
        .setTitle("Title") 
        .setSubTitle("Subtitle") 
        .setTabButtonText(new CharSequence[]{"Tab1", "Tab2"}) 
        .setPositiveButtonText("Ok") 
        .setNegativeButtonText("Cancel") 
        .setNeutralButtonText("Neutral") 
        .setRequestCode(REQUEST_TABBED_DIALOG) 
        .show(); 
     } 
    }); 

和創建這個適配器在您的活動的時候,這樣的創建:

ContactListAdapter mAdapter = new ContactListAdapter(getSupportFragmentManager()); 
+1

謝謝你這麼多Vucko ...你真了不起.. :) –

+0

我想學習Android,所以我需要你的公司來探索我的知識。再次感謝你 –

+0

沒問題的人。玩得開心編碼。 – Vucko

0

這樣做是對FragmentManager實例傳遞給適配器,然後最簡單的方法使用實例。

然而,最好的方法是將創建對話框 的負擔賦予活動本身。

  1. 用方法ex創建一個接口。 showTabDialog。
  2. 在活動中實現此接口,並通過「this」將接口實例傳遞給適配器。
  3. 單擊時調用showTabDialog方法,並通過活動類構建對話框。
0
private View.OnClickListener mOnClickListener; 

public ContactListAdapter(View.OnClickListener clickListener) 
    mOnClickListener = clickListener; 
} 

------------ 
------------ 
slidingListItem.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      mOnClickListener.onClick(view); 
    }); 

而且在u'r活動/片段實施mOnClickListener和的onClick添加對話框相關的代碼。

public void onClick(view view){ 

TabDialogFragment.createBuilder(this, getSupportFragmentManager()) 
        .setTitle("Title") 
        .setSubTitle("Subtitle") 
        .setTabButtonText(new CharSequence[]{"Tab1", "Tab2"}) 
        .setPositiveButtonText("Ok") 
        .setNegativeButtonText("Cancel") 
        .setNeutralButtonText("Neutral") 
        .setRequestCode(REQUEST_TABBED_DIALOG) 
        .show(); 
} 
相關問題