У меня есть активность с 4 вкладками (просмотр фрагментов пейджера). У фрагментов есть формы в них, edittexts для записи информации. Я хотел бы использовать элемент меню в своей деятельности для сохранения информации в базе данных и создания файла PDF. Файл создается хорошо, но информация не передается, и он возвращает ошибку ввода-вывода. Я считаю, что база данных также создана, но в ней не хранится информация. Я получаю нуль.Как элемент меню в моей активности получает данные с вкладок (просматривать фрагменты пейджера)?
public void save_final(){
Serv_BaseDataFragment baseFragment = (Serv_BaseDataFragment)getSupportFragmentManager().findFragmentById(R.id.baseDataTab);
baseFragment.serv_insertToBaseData_db();
ServicingFragment serviceFragment = (ServicingFragment)getSupportFragmentManager().findFragmentById(R.id.servicingTab);
serviceFragment.insertToServicing_db();
ReplacementFragment replaceFragment = (ReplacementFragment)getSupportFragmentManager().findFragmentById(R.id.baseDataTab);
replaceFragment.insertToReplacement_db();
Toast.makeText(this, "ALL DATA STORED SUCCESSFULLY", Toast.LENGTH_LONG).show();
Intent intent = getIntent();
finish();
startActivity(intent);
}
public void writePdf(){
String filename = Serv_BaseDataFragment.sysaid.getText().toString();
Serv_CreatePDF fop = new Serv_CreatePDF();
if (fop.writepdf(filename)) {
Toast.makeText(getApplicationContext(), filename + ".pdf created", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "I/O error", Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_maintenance, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
Intent intent = new Intent(this, Serv_SettingsActivity.class);
startActivity(intent);
return true;
}
if (id == R.id.save_tickets) {
save_final();
writePdf();
return true;
}
return super.onOptionsItemSelected(item);
}
Все четыре фрагмента находятся в одной и той же деятельности. Но пункт меню пытается получить информацию из 3 фрагментов. В 4-м фрагменте будет отображаться сводка информации после ее сохранения в базе данных. –
, когда вы хотите получить информацию из фрагмента, убедитесь, что его фрагмент отображается на экране в тот конкретный момент времени, затем сохраняйте данные в своей деятельности, создавайте «временные» объекты, которые будут хранить данные, пока вы не будете готовы использовать их, перестать просматривать его с комплексного угла, просто получить данные, как вы, когда у вас есть один фрагмент –
. Могу ли я получить пример кода о том, как получить данные из фрагмента в активность? Созданы временные объекты. Я решил, чтобы объекты сохраняли значения при прокрутке фрагментов –