android Fragment 通信 返回键

最近在做项目,分享一些资源。用到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>
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值