Java 如何更新不显示片段
我正在开发一个Android应用程序,它可以随时从本地服务器接收信息。对于应用程序内导航,我选择使用一个导航抽屉,将所选片段替换为Java 如何更新不显示片段,java,android,android-fragments,navigation-drawer,Java,Android,Android Fragments,Navigation Drawer,我正在开发一个Android应用程序,它可以随时从本地服务器接收信息。对于应用程序内导航,我选择使用一个导航抽屉,将所选片段替换为 getSupportFragmentManager().beginTransaction().replace(R.id.flContent, fragment).addToBackStack(null).commit(); 将所选片段添加到Backback,以实现正确的BackPress导航 这些片段在中的my Main活动中初始化 private Overv
getSupportFragmentManager().beginTransaction().replace(R.id.flContent, fragment).addToBackStack(null).commit();
将所选片段添加到Backback,以实现正确的BackPress导航
这些片段在中的my Main活动中初始化
private OverviewFragment overviewFragment;
private IncidentFragment incidentFragment;
private SettingsFragment settingsFragment;
protected void onCreate(){
...
overviewFragment = new OverviewFragment();
incidentFragment = new IncidentFragment();
settingsFragment = new SettingsFragment();
...
}
我现在要做的是根据从服务器接收到的信息更新TextView。我尝试了以下方法:
public void setIncidentDetails(NetworkIncident incident) {
if (incident != null) {
ArrayList<String> medicNames = null;
((TextView) view.findViewById(R.id.inLocationText)).setText(incident.getLocation());
((TextView) view.findViewById(R.id.inKeywordText)).setText(incident.getKeyword());
if(incident.isEmsCalled()) {
((TextView) view.findViewById(R.id.inEmsText)).setText("Rettungsdienst alarmiert");
} else {
((TextView) view.findViewById(R.id.inEmsText)).setText("Kein Rettungsdienst alarmiert");
}
for (int i = 0; i < incident.getMedics().size(); i++){
medicNames = new ArrayList<String>();
NetworkMedic currentMedic = incident.getMedics().get(i);
medicNames.add(currentMedic.getForename() + " " + currentMedic.getSurename());
}
((TextView) view.findViewById(R.id.inMedicText)).setText(medicNames.toString());
}
}
public void setIncidentDetails(网络事件){
如果(事件!=null){
ArrayList medicNames=null;
((TextView)view.findViewById(R.id.inLocationText)).setText(incident.getLocation());
((TextView)view.findViewById(R.id.inKeywordText)).setText(incident.getKeyword());
if(incident.isemCalled()){
((TextView)view.findviewbyd(R.id.inEmsText)).setText(“Rettungsdienst alarmiert”);
}否则{
((TextView)view.findviewbyd(R.id.inEmsText)).setText(“Kein Rettungsdienst alarmiert”);
}
对于(int i=0;i
这只在我之前打开包含TextView的片段时有效。否则,我会在“view.findviewbyd…”上得到一个NullPointerException。显然,因为它以前没有初始化;)
我的问题是,如果没有显示片段(NavigationDrawer中选择了另一个片段),或者甚至没有选择片段,是否有其他方法来更新TextView
(可能是某个全局资源文件,片段在创建/onResume时从中提取信息)?多亏了@Tejas,我才能解决这个问题。实际上,您必须使用数据库或存储要临时更新的数据来更新当前未显示的片段
一旦该片段进入前台,您就可以检索存储的数据以更新文本视图等。只要所需片段位于前台,就可以从本地服务器获取数据并尝试更新所需的文本视图。不允许在活动/片段为后台时更新其UI。@Tejas得到了它,因此可能需要使用一个用于(临时)数据存储的全局资源文件?保存数据并从本地数据库获取数据也是解决方案之一。在片段的生命周期方法中保存和获取数据。