2012-08-17 33 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(); 

    } 
}