本人才疏学浅,如有错漏,希望大家指正批评,大家一起进步,谢谢^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中的数据
}