Android 如何将适配器调到片段?
我使用了3个选项卡,每个选项卡都有片段。我需要将此活动带到选项卡的片段。这可能吗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 =
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;
}