当我的应用程序加载到模拟器或设备时,它会呈现我想要的屏幕,包括带有“图形”的视图。假设我然后点击菜单按钮,在没有选择任何菜单选项的情况下,点击后退按钮。屏幕不再显示“视图”图表。
它的类型为View_PieChart,它扩展了View。以下是XML资源文件的相关块:
<org.test.View_PieChart
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:id="@+id/graph"
android:background="#000"
/>
这是我正在使用的onResume()函数。同样,它在应用程序最初启动时显示“图形”,但是一旦启动另一个Activity,然后用户点击“返回”按钮,它就无法绘制“图形”。
protected void onResume() {
super.onResume();
int MaxCount = 100;
View_PieChart graph = (View_PieChart) findViewById(R.id.graph);
Display display = ((WindowManager)
getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
graph.setGeometry(width, width, 15, 15, 15, 15);
graph.setData(PieData, MaxCount);
}
我已经梳理了大量文档(包括活动生命周期文档),但感觉在View“生命周期”中有一些我不理解的东西。任何建议表示赞赏。
答案 0 :(得分:1)
您是否打算在setGeometery()中传递“width”两次?
此外,问题可能是在调用onResume()时,视图布局尚未完成,因此操纵几何图形不会按预期工作。 onCreate()中也存在同样的问题。
我遇到了类似的问题,发现解决方案是创建一个OnGlobalLayoutListener(),它将在布局完成时调用。例如,
mTopView = (RelativeLayout)findViewById(R.id.topView);
mTopView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener(){
@Override
public void onGlobalLayout() {
// Do here anything that relies on view dimensions being settled
}
});