首先activity之間的數據傳遞就是android
用intent和intent+bundleapi
intentapp
傳遞ide
Intent i= new Intent(MainActivity.this,TheAty.class); i.putExtra("date","Hello SWWWWWW"); startActivity(i);
接受數據this
Intent i =getIntent(); tv=(TextView) findViewById(R.id.tv); //經過「date」關鍵字進行添加tv.setText(i.getStringExtra("date"));
intent+bundlespa
傳遞數據code
Intent i= new Intent(MainActivity.this,TheAty.class); Bundle b=new Bundle(); b.putString("name","SWWWWW"); b.putInt("age",21); b.putString("depart","KuaiJi"); i.putExtras(b); startActivity(i);
接受數據orm
Intent i =getIntent(); Bundle data=i.getExtras(); tv=(TextView) findViewById(R.id.tv); tv.setText(String.format("name=%s,age=%d,depart=%s",data.getString("name"),data.getInt("age"),data.getString("depart")));
下面就是Activity與fragment之間的傳遞數據對象
activity傳給fragmentblog
第一種
MyFragment myFragment = new MyFragment(); Bundle bundle = new Bundle(); bundle.putString("DATA",values);//這裏的values就是咱們要傳的值 myFragment.setArguments(bundle);
第二種
//宿主activity中的getTitles()方法 public String getTitles(){ return "hello"; } //Fragment中的onAttach方法 @Override public void onAttach(Activity activity) { super.onAttach(activity); titles = ((MainActivity) activity).getTitles(); } //經過強轉成宿主activity,就能夠獲取到傳遞過來的數據
3 這個回調方法,在不少api中常用,我就看了一天api我就知道這種回調常用並且很是有用
Fragment向activity中傳值
1.在Fragment中寫一個回調接口
2.在activity中實現這個回調接口
3,在Fragment中onAttach 方法中獲得activity中實現好的 實例化接口對象
4,用接口的對象 進行傳值
activity
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); } }
Frag
@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); } }
ment