最近在做项目,分享一些资源。用到Fragment ,Fragment中定义接口,activity中实现这个接口,就可以在 从fragment 中传参并在Activity中执行。原谅我偷懒,直接把源码搬过来了~ProjectEntity是自己写的类。从Activity中new Fragment的时候,可以用new instance 添加参数传到Fragment下面是Activity 中的相关部分。只是部分代码,不能copy就运行的,只是分享一下方法。不懂请留言。~
public class MapforLeading2Activity extends Activity implements FmProjectInfoListener
{
public static FmProjectInfo newInstance(ProjectEntity projectEntity){
FmProjectInfo mf = new FmProjectInfo();
Bundle args = new Bundle();
args.putSerializable("projectEntity",projectEntity);
mf.setArguments(args);
return mf;
}
//实现FmProjectInfo类就这句话:
fmProjectInfo=newInstance(projectEntity);
//下面这个是FmProjectInfoListener 中的方法,是FmProjectInfo 中定义的方法。下面我会讲
public void backToList(int index) {
System.out.println("backToList--->");
FragmentManager fm = getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
if(fm3==null)
fm3=new Fm3();
transaction.replace(R.id.content_fm, fm3);
transaction.commit();
}
//要想点击返回键可以返回到上一个Fragment 只需在transaction.commit(); 前添加:transaction.addToBackStack(null); 即可。这个会自动添加到赶回栈中。</span>
public class FmProjectInfo extends Fragment {
/** Activity要实现这个接口,这样Fragment和Activity就可以共享事件触发的资源了 */
public interface FmProjectInfoListener
{
public void backToList(int index);
}
private FmProjectInfoListener myListener;
private Button bt_to_list;
private TextView tv1 ;
/** Fragment第一次附属于Activity时调用,在onCreate之前调用 */
@Override
public void onAttach(Activity activity)
{
super.onAttach(activity);
System.out.println("FmProjectInfo--->onAttach");
myListener = (FmProjectInfoListener) activity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.project_info, container, false);
System.out.println("FmProjectInfo--->onResume");
Gallery gallery = (Gallery) view.findViewById(R.id.gallery1);
bt_to_list = (Button) view.findViewById(R.id.back_to_list);
MyButtonClickListener clickListener = new MyButtonClickListener();
bt_to_list.setOnClickListener(clickListener);
tv1=(TextView) view.findViewById(R.id.tv1);
Bundle args = getArguments();
if (args != null){
System.out.println("onCreate"+args.getSerializable("projectEntity"));
ProjectEntity projectEntity=(ProjectEntity) args.getSerializable("projectEntity");
tv1.setText(projectEntity.getPro_name());
}
System.out.println("FmProjectInfo--->onCreateView");
return view;
}
class MyButtonClickListener implements OnClickListener
{
public void onClick(View v)
{
Button button = (Button) v;
if(button == bt_to_list)
myListener.backToList(1);
}
}
}
</span>