2015-09-17 86 views
-1

我使用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)); 
} 

}

public class FragmentTab1 extends Fragment { 

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

    View rootView = inflater.inflate(R.layout.grid_layout, container, false); 
    GridView gridView = (GridView) getActivity().findViewById(R.id.grid_view); 


    return rootView; 
} 

有人可以帮助我编辑的片段类从适配器带来的活动。 感谢

回答

1

答对从here.

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; 
} 
0

一个不那么干净,但最简单的方法是做到这一点:

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; 
    } 
} 

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

+0

我在得到错误'activityAdapter =(MAcitivity)getActivity()getImageAdapter();'的错误是在'acitivityAdapter'和'getImageAdapter' –

+0

试图强行括号。它应该工作 - ((MActivity)getActivity())。getImageAdapter() – shiladitya

+0

仍然'activityAdapter'错误是不固定的,现在我得到红色下划线从第一个括号到'getActivity())',因为错误说'不能将'android.support.v4.app.FragmentActivity'投给com.example.app.MActivity' –

0

如果我对您的问题的理解是正确的,一种方法是通过您的ViewPager适配器和碎片的构造函数传递活动/上下文对象。

+0

我也在寻找更正的代码片段。 –

+0

嗨..他说的是你只需要添加一个参数化的构造函数。如果明显的 – shiladitya

+1

片段不需要通过其重新创建参数构造函数,我不认为答案需要显式代码,例如,在屏幕上旋转。除非片段被保留,否则您将失去通过'onSaveInstanceState'机制保存的所有内容。 –