Activityとfragment間の転送データ
9634 ワード
まずactivity間のデータ伝達は
intentとintent+bundleで
intent
トランスファ
Intent i= new Intent(MainActivity.this,TheAty.class);
i.putExtra("date","Hello SWWWWWW");
startActivity(i);
データを受け入れる
Intent i =getIntent();
tv=(TextView) findViewById(R.id.tv);
// “date” tv.setText(i.getStringExtra("date"));
intent+bundle
データの転送
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);
データを受け入れる
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間の転送データです
义齿
第1種
MyFragment myFragment = new MyFragment();
Bundle bundle = new Bundle();
bundle.putString("DATA",values);// values
myFragment.setArguments(bundle);
第2種
// 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を書く.このコールバックインタフェース3をactivityで実現し、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
転載先:https://www.cnblogs.com/mrszhou/p/7101270.html