2014-12-20 63 views
0

我有一個代碼結構轉換片段就像下面從一個GridView適配器

1.MAINACTIVITY 
2.FRAGMENTACTIVITY 
3.GRIDVIEWADAPTER 

-In my main activity I have set code to display and switch fragments that I have in my project 
-In fragment activity I have set a custom gridview with a image and text layout 
-In gridview adapter I have onitemclicklistener for gridview items 

現在我想打開的onitemclicklistener GridView控件, 的點擊的片段,但我的代碼切換片段距離主活動。如何傳遞需要將片段從網格視圖適配器類切換到主要活動的參數?

回答

0

試試這個

public class MainActivity extends Fragment { 
    GridView gridview; 
    FragmentActivity frag_activity; 

    public MainActivity() { 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     this.frag_activity = (FragmentActivity) activity; 
    } 

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

     View rootView = inflater.inflate(R.layout.fragment_create_form, 
       container, false); 
     gridview = (GridView) rootView.findViewById(R.id.gridView1); 
     gridview.setVerticalScrollBarEnabled(false); 
     return rootView; 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     GridMaker(); 
    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onViewCreated(view, savedInstanceState); 
     GridMaker(); 

    } 

    private void GridMaker() { 
     gridview.setAdapter(new Custom_Adapter(frag_activity)); 
     gridview.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       String name = null; 

       if (arg2 == 0) { 
        name = "A"; 
        displayView(arg2, name); 
       } else if (arg2 == 1) { 
        name = "B"; 
        displayView(arg2, name); 
       } else if (arg2 == 2) { 
        name = "C"; 
        displayView(arg2, name); 
       } else if (arg2 == 3) { 
        name = "D"; 
        displayView(arg2, name); 
       } else if (arg2 == 4) { 
        name = "E"; 
        displayView(arg2, name); 
       } 

      } 
     }); 
    } 

    private void displayView(int position, String name) { 
     // update the main content by replacing fragments 
     Fragment fragment = null; 
     fragment = new DynamicFragment(name); 

     if (fragment != null) { 
      FragmentManager fragmentManager = getFragmentManager(); 
      fragmentManager.beginTransaction() 
        .replace(R.id.frame_container, fragment) 
        .addToBackStack(null).commit(); 

     } 
    } 

} 
+0

這樣做的工作! –

+0

是的,它爲我工作 –