您的位置:首页 > 其它

Activity和fragment传值问题

2016-09-29 20:54 330 查看
Activity传值给Fragment

Fragment  f=new WeatherFragment();
Bundle  data=new Bundle();
data.putString("city",cityList.get(index));
f.setArguments(data);

Fragment向activity中传值

1.在Fragment中写一个回调接口  

2.在activity中实现这个回调接口

3,在Fragment中onAttach 方法中得到activity中实现好的 实例化接口对象

4,用接口的对象  进行传值

代码:

MainActivity:

[java] view
plain copy

 print?

package com.qianfeng.fragmenttoactivity;  

  

import com.qianfeng.fragmenttoactivity.Fragmen1.CallBackValue;  

  

import android.os.Bundle;  

import android.annotation.SuppressLint;  

import android.app.Activity;  

import android.app.FragmentManager;  

import android.app.FragmentTransaction;  

import android.view.Menu;  

import android.widget.TextView;  

  

@SuppressLint("NewApi")   

public class MainActivity extends Activity implements CallBackValue{  

  

    private TextView tv1;  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_main);  

          

        tv1 = (TextView) findViewById(R.id.tv1);  

          

        FragmentManager manager = getFragmentManager();  

        FragmentTransaction transaction = manager.beginTransaction();  

          

        transaction.add(R.id.contents, new Fragmen1());  

        transaction.commit();  

          

    }  

    //要获取的值  就是这个参数的值  

    @Override  

    public void SendMessageValue(String strValue) {  

        // TODO Auto-generated method stub  

        tv1.setText(strValue);  

    }  

  

  

      

}  

Fragment:

[java] view
plain copy

 print?

package com.qianfeng.fragmenttoactivity;  

  

import android.annotation.SuppressLint;  

import android.app.Activity;  

import android.app.Fragment;  

import android.os.Bundle;  

import android.view.LayoutInflater;  

import android.view.View;  

import android.view.View.OnClickListener;  

import android.view.ViewGroup;  

import android.widget.Button;  

import android.widget.EditText;  

  

@SuppressLint("NewApi")   

public class Fragmen1 extends Fragment{  

    private Button btn1;  

    private EditText et1;  

    CallBackValue callBackValue;  

      

    /** 

     * fragment与activity产生关联是  回调这个方法  

     */  

    @Override  

    public void onAttach(Activity activity) {  

        // TODO Auto-generated method stub  

        super.onAttach(activity);  

        //当前fragment从activity重写了回调接口  得到接口的实例化对象  

        callBackValue =(CallBackValue) getActivity();  

    }  

      

      

    @Override  

    public View onCreateView(LayoutInflater inflater, ViewGroup container,  

            Bundle savedInstanceState) {  

        // TODO Auto-generated method stub  

        View view = inflater.inflate(R.layout.fragment_layout1, container, false);  

         btn1 = (Button) view.findViewById(R.id.btn1);  

         et1 = (EditText) view.findViewById(R.id.et1);  

         btn1.setOnClickListener(new OnClickListener() {  

              

            @Override  

            public void onClick(View v) {  

                // TODO Auto-generated method stub  

                String strValue = et1.getText().toString().trim();  

                callBackValue.SendMessageValue(strValue);  

              

            }  

        });  

          

        return view;  

    }  

    //定义一个回调接口  

    public interface CallBackValue{  

        public void SendMessageValue(String strValue);  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: