Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将适配器调到片段?_Android_Android Fragments_Android Activity_Adapter - Fatal编程技术网

Android 如何将适配器调到片段?

Android 如何将适配器调到片段?,android,android-fragments,android-activity,adapter,Android,Android Fragments,Android Activity,Adapter,我使用了3个选项卡,每个选项卡都有片段。我需要将此活动带到选项卡的片段。这可能吗 public class MActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.grid_layout); GridView gridView =

我使用了3个选项卡,每个选项卡都有片段。我需要将此活动带到选项卡的片段。这可能吗

public class MActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.grid_layout);
    GridView gridView = (GridView) findViewById(R.id.grid_view);
    gridView.setAdapter(new ImageAdapter(this));
}
}

有人能帮我编辑fragment类以从适配器中获取活动吗。
谢谢一个不那么干净的人,但最简单的方法是:

 public class FragmentTab1 extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.tab_1, container, false);
        activityAdapter = (MActivity)getActivity().getImageAdapter();
        return rootView;
    }
在活动中公开适配器获取程序->

public class MActivity extends Activity {

    private ImageAdapter adapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.grid_layout);
        GridView gridView = (GridView) findViewById(R.id.grid_view);
        this.adapter = new ImageAdapter(this);
        gridView.setAdapter(this.adapter);
    }

    public ImageAdapter getImageAdapter(){
        return this.adapter;
    }
}

第二种方法是在片段中创建构造函数,以便在构建片段时接收适配器对象。(这将是一个更干净的对象)

如果我对您的问题的理解是正确的,一种方法是通过ViewPager适配器和片段的构造函数传递activity/context对象。


我也在寻找片段的正确代码。嗨。。他说的是,您只需要添加一个参数化构造函数。我认为答案不需要显式代码,如果显而易见的是片段不需要参数构造函数来重新创建它们,例如在屏幕上旋转。除非保留片段,否则将丢失未通过
onSaveInstanceState
机制保存的所有内容。我在
activityAdapter=(MAcitivity)getActivity().getImageAdapter()处收到错误错误位于
acitivityAdapter
getImageAdapter
尝试强制使用括号。它应该可以工作-((MActivity)getActivity()).getImageAdapter()仍然
activityAdapter
错误没有修复,现在我从第一个括号的开口处得到红色下划线,指向
getActivity())
,正如错误所说,
无法将“android.support.v4.app.FragmentActivity”转换为com.example.app.MActivity
好的。。那么我建议你按照另一个答案去做。。使用构造函数方法
public class MActivity extends Activity {

    private ImageAdapter adapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.grid_layout);
        GridView gridView = (GridView) findViewById(R.id.grid_view);
        this.adapter = new ImageAdapter(this);
        gridView.setAdapter(this.adapter);
    }

    public ImageAdapter getImageAdapter(){
        return this.adapter;
    }
}
    public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.tab_1,container,false);
    GridView gridView = (GridView) view.findViewById(R.id.grid_view);
    gridView.setAdapter(new ImageAdapter(view.getContext()));
    return view;
}