fragment传值给Activity

来源:互联网 发布:薛家 知乎 编辑:程序博客网 时间:2024/05/29 11:53

本人才疏学浅,如有错漏,希望大家指正批评,大家一起进步,谢谢^0^

一、如何从fragment传值到Activity

先上一张大概的流程图:

总共两步:1、通过回调接口,将值从fragment传递给宿主activity

                  2、通过Intent或者Bundle将值从宿主Activity传给另一个Activity

 

 

具体关键代码:

//--------------------------------------------fragment--------------------------------------------------------------

private callbackValue Interface_callback;//回调接口,用来和activity互通信息
 /**
  * 回调接口,用来传记数值给目标activity,经过中介(父类activity)再向目标值传递
  * @author asus
  *
  */
 public interface callbackValue
 {
  public void sendDataOfRecord(List<RecordItem> data,int kinds);
 }
 
 /**
  * 这是与activity相关联的方法
  */
 @Override
 public void onAttach(Activity activity) {
  super.onAttach(activity);
  Interface_callback = (callbackValue)activity;
 }

 

//---------------------------------------------------宿主Activity-----------------------------------------

public class HomeActivity extends FragmentActivity implements callbackValue{
 private ViewPager mViewpager;
 private TabPageIndicator indicator;
 private Context context;
 private String[] Titles = {"展示","搜索","下载","记录"};

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
//替换fragment代码略  

}

 @Override
 public void sendDataOfRecord(List<RecordItem> data,int kinds) {
  Intent intent = new Intent();
  intent.putExtra("data", (Serializable)data);
  intent.putExtra("kinds", kinds);
  intent.setClass(context,LineChartActivity.class);
  startActivity(intent);
 }

//-----------------------------------------------------要传值的Activity-------------------------------------

public class LineChartActivity extends ActionBarActivity {
 private ArrayList<Integer> List = new ArrayList<Integer>();

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_line_chart);
  Intent intent = getIntent();
  ArrayList<RecordItem> data = (ArrayList<RecordItem>) intent
    .getSerializableExtra("data");//获取intent中的数据

}

 

0 0