我有一个像
这样的代码结构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
现在我想在gridview的onitemclicklistener点击时切换片段, 但我切换片段的代码是在主要活动中。如何传递参数需要将片段从网格视图适配器类切换到主活动。?
答案 0 :(得分: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();
}
}
}