在activity中加載 frament,並傳遞給它參數
//setArguments //1.實例化Fragment Fragment f1 = new Fragment1(); //2.實例化一個Bundle對象 Bundle bundle = new Bundle(); //3.存入數據到Bundle對象中 bundle.putString("msg1","這是由Activity發往Fragment的數據"); //4.調用Fragment的setArguments方法,傳入Bundle對象 f1.setArguments(bundle); //5.添加/替換顯示的Fragment transaction.replace(R.id.container,f1);
在fragment.java, 接收到參數
//Fragment創建視圖 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment Log.e("TAG","onCreateView--Fragment視圖創建好了"); View v = inflater.inflate(R.layout.fragment_fragment1, container, false); Bundle b = getArguments(); String msg1 = b.getString("msg1"); ((TextView)v.findViewById(R.id.txt1)).setText(msg1); return v; }
也可以通過 public void onAttach(Context context)
來得到activity,然后操作activity。
MainActivity.java
public class MainActivity extends AppCompatActivity {
public String msg = "How are you ";
}
fragment.java
@Override public void onAttach(Context context) { super.onAttach(context); String msg = ((MainActivity)context).msg; Toast.makeText(context,msg,Toast.LENGTH_SHORT).show(); Log.e("TAG","onAttach--Fragment與Activity關聯"); }