我的活动有4个标签(查看寻呼机片段)。片段中包含表单,edittexts用于记录信息。我想在我的活动中使用菜单项将信息保存到数据库并创建pdf文件。该文件创建正常但没有信息传递给它,它返回一个I / O错误。我相信数据库也已创建,但没有信息存储在其中。我得到一个null。
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);
}
答案 0 :(得分:0)
如果它们在获取数据时同时处于相同的活动和相同的片段中,例如,如果我们假设我们有一个id为chrome的菜单项,一个字符串名称=“john”和一个TextView mName就像:
switch (item.getItemId()) {
// case R.id.chrome:
mName.setText(name);
}
但有一件事你必须要知道,一个片段永远不会有一个上下文,并且片段没有什么特别之处,只需确保在获取数据时你应该从同一个片段中获取数据。
答案 1 :(得分:0)
为了解决我的小问题,我移动了方法将数据从片段插入数据库到Activity。我在活动中创建了变量来引用片段中的对象。