Android 在滑动选项卡之间传递对象
我有两个片段,在滑动选项卡上使用它,我想将对象从片段(1)传递到该对象来自的片段(2)(Web服务) 此活动负责制表符Android 在滑动选项卡之间传递对象,android,android-fragments,tabs,Android,Android Fragments,Tabs,我有两个片段,在滑动选项卡上使用它,我想将对象从片段(1)传递到该对象来自的片段(2)(Web服务) 此活动负责制表符 public class ChartActivity extends AppCompatActivity { private static final String TAG="ChartActivity"; private ViewPager mPager; private SlidingTabLayout tabLayout; private Toolbar t
public class ChartActivity extends AppCompatActivity {
private static final String TAG="ChartActivity";
private ViewPager mPager;
private SlidingTabLayout tabLayout;
private Toolbar toolbarChart;
private TextView txtToolbar;
private AdapterTabs adapterTabs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chart);
Log.e(TAG,"starting to Create Chart");
setupToolBar();
setupTabs();
}
// setup ToolBar
public void setupToolBar() {
toolbarChart = (Toolbar) findViewById(R.id.app_bar_chart); // get instance from view
setSupportActionBar(toolbarChart); // set Toolbar in supporting ActionBar
getSupportActionBar().setDisplayShowTitleEnabled(false);
txtToolbar=(TextView)toolbarChart.findViewById(R.id.toolbar_title);
txtToolbar.setText("Dashboard");
}
public void setupTabs(){
tabLayout=(SlidingTabLayout)findViewById(R.id.tabs);
mPager=(ViewPager)findViewById(R.id.viewPager);
adapterTabs= new AdapterTabs(this,getSupportFragmentManager());
mPager.setAdapter(adapterTabs);
tabLayout.setDistributeEvenly(true);
tabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
@Override
public int getIndicatorColor(int position) {
return getResources().getColor(R.color.colorAccent);
}
});
tabLayout.setViewPager(mPager);
}
public AdapterTabs getAdapterTabs() {
return adapterTabs;
}
}
这个片段(1)
public类片段扩展片段{
私有最终静态字符串inpularity_STATE=“inpularity”;
公共最终静态字符串outmount\u STATE=“outmount”;
私有请求队列请求;
私人海图;
ArrayList住院患者;
ArrayList Outmount;//Outmount===>在片段(2)中显示它
私有进程对话;
私人排球单打;
私有最终静态字符串TAG=“inquiredfragment”;
公共卫生服务({
//必需的空公共构造函数
}
@凌驾
创建时的公共void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
progressDialog=新建progressDialog(getActivity());
progressDialog.setUndeterminate(true);
设置消息(“加载数据…”);
requsetDatachart();
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图布局=充气机。充气(R.layout.fragment\u住院患者,容器,假);
chart=(PieChart)layout.findviewbyd(R.id.PieChart);
图表。setCenterTextSize(10);
图表。setCenterText(“住院患者”);
图表。setDrawEntryLabels(真);
图.塞托莱拉迪乌斯(2.5f);
返回布局;
}
@凌驾
公共void-onAttach(上下文){
super.onAttach(上下文);
}
私有void请求数据表(){
singleton=VolleySingleton.getInstance();
request=singleton.getRequestQueue();
progressDialog.show();
JsonObjectRequest objectRequest=新的JsonObjectRequest(Request.Method.GET,MyApplication.APP_URL+“api/getOverview”,null,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
住院患者=PatientPasser.parserJsonPatient(回答,“住院患者”,1);
Log.e(标签,inspitalpatients.size()+);
门诊=PatientPasser.parserJsonPatient(回答“门诊”,0);
addDataToChart(住院患者);
progressDialog.disclose();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.e(标记,error.getMessage());
progressDialog.disclose();
}
});
添加(objectRequest);
}
公共无效addDataToChart(列出患者){
ArrayListPieeEntries=新的ArrayList();
对于(int i=0;片段(1)中的i列表)
公共类OutpatientFragment扩展了片段{
私有最终静态字符串TAG=“OutpatientFragment”;
私有静态最终字符串ARG_PARAM1=“PARAM1”;
ArrayList门诊;
私有请求队列请求;
私人海图;
私有进程对话;
私人排球单打;
公共门诊片段(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图布局=充气机。充气(R.layout.fragment\u,容器,false);
//getArguments();
chart=(PieChart)layout.findviewbyd(R.id.PieChart);
图表。setCenterTextSize(10);
图表.setCenterText(“门诊”);
图表。setDrawEntryLabels(真);
图.塞托莱拉迪乌斯(2.5f);
返回布局;
}
@凌驾
恢复时公开作废(){
super.onResume();
}
@凌驾
创建时的公共void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
progressDialog=新建progressDialog(getActivity());
progressDialog.setUndeterminate(true);
设置消息(“加载数据…”);
}
}
我想你可以用它。例如
在中
接收数据时调用EventBus.getDefault().post(newmessageevent())
例如,在OutpatientFragment
中创建接收数据的方法
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {/* Do something */};
public class OutpatientFragment extends Fragment {
private final static String TAG = "OutpatientFragment";
private static final String ARG_PARAM1 = "param1";
ArrayList<Patient> outPatient;
private RequestQueue request;
private PieChart chart;
private ProgressDialog progressDialog;
private VolleySingleton singleton;
public OutpatientFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View layout=inflater.inflate(R.layout.fragment_outpatient, container, false);
//getArguments().getBundle(InpatientFragment.OutPatient_STATE).getParcelableArrayList();
chart = (PieChart) layout.findViewById(R.id.pieChart);
chart.setCenterTextSize(10);
chart.setCenterText("Outpatient");
chart.setDrawEntryLabels(true);
chart.setHoleRadius(2.5f);
return layout;
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
progressDialog = new ProgressDialog(getActivity());
progressDialog.setIndeterminate(true);
progressDialog.setMessage("Load Data...");
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {/* Do something */};