already implement several things and simply do not find as, good step to the point: I have several fragments that I display with the viewpager, I want to save the data that is in the fragment controls, for this I have a function in the fragment to be saved, for that purpose create the function updateCaja ();
public class Fragment_Caja1 extends Fragment {
public Fragment_Caja1() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.fragment_caja1, container, false);
edt_caja1 = (EditText) v.findViewById(R.id.edt_caja1);
return v;
}
public void updateCaja(int _id){
ContentValues val = new ContentValues();
val.put("caja1", caja1.getText().toString);
SQLiteDatabase db = getActivity().openOrCreateDatabase("Caja", android.content.Context.MODE_PRIVATE, null);
db.update("Caja",uEnc,"_id="+_id, null);
db.close();
}
}
I add the code of my main activity:
public class Activity_Caja extends AppCompatActivity implements Comunicador{
int id_tabla_caja1;
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.clear();
getMenuInflater().inflate(R.menu.menu_encuesta, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.opc_guardar:
actualiza(id_tabla_caja1);
return true;
case R.id.opc_cancelar:
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lineabase);
toolbar = (Toolbar) findViewById(R.id.tb_lin_bas);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new Fragment_Caja1(), "Caja1");
adapter.addFragment(new Fragment_Caja2(), "Caja2"));
viewPager.setAdapter(adapter);
}
@Override
public void actualiza(int id) {
FragmentManager fm = getSupportFragmentManager();
Fragment_Caja1 f_c1 = (Fragment_Caja1 fm.findFragmentById(R.layout.fragment_caja1);
f_c1.updateEncuesta(id);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
}
I use an interface:
public interface Comunicador {
public void actualiza(int id);
}