2015-09-17 88 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'機制保存的所有內容。 –