我正在开发一款需要连接到某些硬件的Android应用,并通过线性图表向最终用户提供实时数据。为此,我使用MPAndroid库在片段内显示此线性图表。
这就是
我的问题是当我转到另一个视图并回到我的图表片段时,图表会丢失所有值并返回到初始状态。我尝试将我的图表inisialization放在OnCreate然后在OnAttach中,但它没有用。我的图表需要保持这些值直到小时结束,然后从屏幕移动到屏幕重置所有内容。 这是我的代码:
c=Calendar.getInstance();
minute=c.get(Calendar.MINUTE);
hour=c.get(Calendar.HOUR_OF_DAY);
setXAxisValues( String.valueOf(hour));
setYAxisValues();
这个代码只有在我第一次输入片段时才需要调用,而且永远不会被再次调用,因为它只是设置了图表。
修改
根据Piyush的建议,这是我的代码:
if (savedInstanceState!= null) {
yVals=savedInstanceState.getParcelableArrayList("savedList");
Log.e("TAG","********************************************saved instance*********************************************");
}
else {
c=Calendar.getInstance();
minute=c.get(Calendar.MINUTE);
hour=c.get(Calendar.HOUR_OF_DAY);
setXAxisValues( String.valueOf(hour));
Log.e("TAG","********************************************not saved*********************************************");
yVals=setYAxisValues();
}
final View view = inflater.inflate(R.layout.fragment_acceuil, container, false);
答案 0 :(得分:0)
onResume被调用。
所以你最好再打个电话!
@Override
protected void onResume() {
super.onResume();
c=Calendar.getInstance();
minute=c.get(Calendar.MINUTE);
hour=c.get(Calendar.HOUR_OF_DAY);
setXAxisValues( String.valueOf(hour));
setYAxisValues();
}
答案 1 :(得分:0)
你必须在MainActivity中实现FragmentManager.OnBackStackChangedListener,然后在这样的调用onResume方法中实现
@Override
public void onBackStackChanged() {
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fr = fragmentManager.findFragmentById(R.id.frame_container);
if (fr != null) {
fr.onResume();
}
}
然后在每个片段的onResume方法中,您再次重新加载更新的数据