Android 从ArrayAdapter获取碎片管理器

Android 从ArrayAdapter获取碎片管理器,android,Android,我有一个从自定义ArrayAdapter填充的列表视图。在每个视图中都有一个按钮。我想在单击按钮时更改当前片段。这是我的代码: public class CheckInSArrayAdapter extends ArrayAdapter<JSONObject> { @Override public View getView(int position, View convertView, ViewGroup parent) { return getV

我有一个从自定义ArrayAdapter填充的列表视图。在每个视图中都有一个按钮。我想在单击按钮时更改当前片段。这是我的代码:

public class CheckInSArrayAdapter extends ArrayAdapter<JSONObject> {


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return getViewOptimize(position, convertView, parent);
    }

    public View getViewOptimize(int position, View convertView, ViewGroup parent) {

    ......

        viewHolder.commentBtn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

            ??? <<<<<

        });

        return convertView;
    }

    private class ViewHolder {
        ...       
        public Button commentBtn;
    }

}
公共类CheckInSArrayAdapter扩展了ArrayAdapter{
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
返回getViewOptimize(位置、转换视图、父级);
}
公共视图getViewOptimize(int位置、视图转换视图、视图组父视图){
......
viewHolder.commentBtn.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){

这么晚了,但这里没有人回答这个问题

您可以使用以下命令在getview方法中调用片段管理器

FragmentManager fm = ((Activity)context).getFragmentManager(); 
getFragmentManager()是活动类的一个方法

比如说

holder.tvBuy.setOnClickListener(new OnClickListener()
{

@Override
public void onClick(View v) 
{
    // TODO Auto-generated method stub
     Fragment fragment;
     fragment = new Buy();
    ((Activity)context).getFragmentManager().beginTransaction().replace(R.id.content_frame,fragment).commit();
}
}
在这里,您需要将活动作为上下文传递给适配器


希望它能帮助某人……

好吧,也许我有点晚了,但是,也许它能帮助一些人做到这一点

在您调用适配器的类中,您需要扩展或实现“FragmentActivity”。然后您的活动将包含fragmentManager

当您调用适配器时,请使用扩展FragmentActivity的类调用它

MyAdapterName = new MyAdapterName(MyClassName.this, Objects);
然后在getView()中的适配器中执行此操作

final Context context = parent.getContext();
FragmentManager fm = ((Activity) context).getFragmentManager();
小心使用好的android FragementManager -android.app.FragmentManager
不是android.support.v4.app.FragmentManager;

您可以在适配器中定义回调并在构造中传递实例,或者您可以签出listView.setOnItemClickListener(),这对我来说很有效。最有价值的部分是
((活动)上下文)。getFragmentManager().beginTransaction().replace(R.id.content\u frame,fragment)。commit();
就像我习惯于使用
getActivity()一样
而不是那样创建一个。谢谢你……你刚刚救了我的命:D我想知道你是从哪里得到这个主意的???我的意思是你有一些url或文档要看……只是为了理解你刚才说的did@Ayoub很高兴听到,这很有帮助。我没有任何文档或url,因为这些代码是我自己项目的一部分。可能吗要使用android.support.v4.app.FragmentManager;@VV我不知道,但您可以尝试,只需将导入替换为android.support.v4.app.FragmentManager,看看是否可以!