2012-08-17 54 views
0

訪問活動我有以下處理:安卓:從處理器

public class SiteListener implements OnItemClickListener{ 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 
    } 
} 

我希望能夠調用以下:

myActivity.getSupportFragmentManager() 
      .beginTransaction() 
      .add(R.id.site_info, siteInfoFragment) 
      .commit(); 

如何獲得從SiteListener活動訪問?有沒有辦法使用adapterView

回答

1

您可以投FragmentActivityview得到FragmentActivity的實例。

FragmentActivity activity = ((FragmentActivity)view.getContext()); 
activity.getSupportFragmentManager() 
      .beginTransaction() 
      .add(R.id.site_info, siteInfoFragment) 
      .commit(); 
+1

是上下文相關保證是一個活動? – Casebash 2012-08-17 09:50:02

+0

在你的情況下,它將是FragmentActivity。因爲你需要FragmentActivity實例來調用'getSupportFragmentManager()'。 – 2012-08-17 09:53:59

+0

是'((FragmentActivity)view.getContext())'會給你視圖所附帶的實例FragmentActivity。 – 2012-08-17 09:56:55

3

當您創建活動時,將活動的引用傳遞給SiteListener

編輯添加的代碼示例:

public class SiteListener implements OnItemClickListener{ 
    private MyActivity myActivity; 

    public SiteListener(MyActivity myActivity) { 
     this.myActivity = myActivity; 
    } 

    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 
     myActivity.getSupportFragmentManager() 
      .beginTransaction() 
      .add(R.id.site_info, siteInfoFragment) 
      .commit(); 

    } 
}