As i am new to android I stuck to some point while implementing ActionBarTab with swipable viewpager using fragments
I have 3 tabs each with some controls last tab will submit all tabs data to one table i navigate through next button and with tab change event
using next tab i can set data to Class object using getter/Setter and i submit that class data to DB table for save ..
now i want to call same method while tab change event method is SetdataToModelClass()
How to call same method on tab change event which is already called on button click event so if user navigate through tabs instead next button and change any data My SetdataToModelClass() is called
SetdataToModelClass is in every fragment,where as my Tab change event is in MainFragmentActivity class so how to call SetdataToModelClass() method on tab change event (i.e want to have communication between MainFragment Act & Fragment)
Code for MainActivity Class is here:
public class TestFragmentTabHost extends FragmentActivity implements TabListener {
ViewPager vp;
ActionBar ab;
SalesActivity sa = new SalesActivity();
SessionManager session = null;
String usrNm = null;
String szImeiId = null;
Spinner spnAECust;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabhost_act);
/* Action Bar Color change on create*/
ActionBar actionBar = getActionBar();
ActionBarColor.setBackgroundColor(actionBar);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setTitle(Html.fromHtml("<font color=\"white\" face=\"verdana,arial\">" + getString(R.string.air) + "</font>"));
// Session Manager
session = new SessionManager(getApplicationContext());
/* To Get Unique Device id */
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
szImeiId = TelephonyMgr.getDeviceId(); // Requires READ_PHONE_STATE.
// get User Details from Session
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap = session.getUserDetails();
usrNm = hashMap.get(SessionManager.KEY_USRNM);
vp = (ViewPager) findViewById(R.id.pager);
vp.setAdapter(new MyPageAdapter(getSupportFragmentManager()));
ab = getActionBar();
ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tab1 = ab.newTab();
tab1.setText("INFO");
tab1.setTabListener(this);
ActionBar.Tab tab2 = ab.newTab();
tab2.setText("PORT");
tab2.setTabListener(this);
ActionBar.Tab tab3 = ab.newTab();
tab3.setText("PACKAGES");
tab3.setTabListener(this);
ab.addTab(tab1);
ab.addTab(tab2);
ab.addTab(tab3);
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
vp.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
// For Page adapter
class MyPageAdapter extends FragmentPagerAdapter {
public MyPageAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int arg0) {
Fragment frgmnt = null;
if (arg0 == 0) {
frgmnt = new InfoFragment();
}else if (arg0 == 1) {
frgmnt = new PortFragment();
}else if (arg0 == 2) {
frgmnt = new PackagesFragment();
}
return frgmnt;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 3;
}
}
public void setSalesInfoData(List<String> sales) {
while (sales.size() > 0) {
sa.setCustomerId(Integer.parseInt(sales.get(0).toString()));
sa.setProspectId(Integer.parseInt(sales.get(1).toString()));
sa.setCommodityId(Integer.parseInt(sales.get(2).toString()));
sa.setSpecialNotes(sales.get(3));
sa.setLob(sales.get(4));
DateFormat dt = new DateFormat();
Date crTs = dt;
sa.setCrTs(crTs);
sa.setCrUsr(usrNm);
sa.setDeviceId(szImeiId);
break;
}
}
using method to setdata to Class SalesActivity