java.lang.NullPointerException
at android.graphics.Canvas.throwIfRecycled(Canvas.java:954)
at android.graphics.Canvas.drawBitmap(Canvas.java:980)
at org.achartengine.GraphicalView.onDraw(GraphicalView.java:174)
at android.view.View.draw(View.java:6880)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1862)
at android.view.ViewRoot.draw(ViewRoot.java:1522)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
at android.graphics.Canvas.throwIfRecycled(Canvas.java:954)
at android.graphics.Canvas.drawBitmap(Canvas.java:980)
at org.achartengine.GraphicalView.onDraw(GraphicalView.java:174)
at android.view.View.draw(View.java:6880)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1862)
at android.view.ViewRoot.draw(ViewRoot.java:1522)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
解决方案 »
- 求助 android的listview控件的OnScrollListener的firstVisibleItem在滑动太快的时候监听不到 是因为什么原因
- 手机访问时,request.getHeader("Accept")获取
- RP大爆发!需求帮助
- windows 7 下能做安卓开发吗??
- 在电脑上编程如何获取模拟器上手机QQ的好友列表?
- 吐血请教为什么admob显示不了啊
- android ui设计
- NDK编译C++缺少iconv.h文件
- android程序可以开发直接打内线号码吗?
- 求助一下大神,关于C#开发android和java开发的区别
- 自定义Adapter中getView调用次数的问题
- ksoap2_WebService问题
at org.achartengine.GraphicalView.onDraw(GraphicalView.java:174)
GraphicalView.java是系统类 不是我写的
package com.zhx.app.finance.ui;import java.util.HashMap;
import java.util.Map;import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.model.CategorySeries;
import org.achartengine.renderer.DefaultRenderer;
import org.achartengine.renderer.SimpleSeriesRenderer;import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.LinearLayout;
import android.widget.ToggleButton;import com.zhx.app.finance.R;
import com.zhx.app.finance.control.DataAnalyseControl;public class DetailActivity extends Activity { private static final String TAG = "DetailActivity";
private ToggleButton toggle;
private LinearLayout chartView;
private static int[] COLORS = new int[] { Color.GREEN, Color.BLUE, Color.MAGENTA, Color.CYAN };
private CategorySeries mSeries = new CategorySeries("");
private DefaultRenderer mRenderer = new DefaultRenderer();
private GraphicalView graphicView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.data_detail_layout);
initComponet();
// initIncomeView();
} private void initComponet() {
mRenderer.setApplyBackgroundColor(true);
mRenderer.setBackgroundColor(Color.argb(100, 50, 50, 50));
mRenderer.setChartTitleTextSize(20);
mRenderer.setLabelsTextSize(15);
mRenderer.setLegendTextSize(15);
mRenderer.setMargins(new int[] { 20, 30, 15, 0 });
mRenderer.setZoomButtonsVisible(true);
mRenderer.setStartAngle(90);
toggle = (ToggleButton) findViewById(R.id.detail_chart_switch);
chartView = (LinearLayout) findViewById(R.id.detail_chart_show);
toggle.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (!isChecked) { // 为textOn时
initIncomeView();
} else { // 为textOff时
initExpensesView();
}
}
});
} private void initIncomeView() {
Map<String, Float> money = new HashMap<String, Float>();
Map<Integer, String> type = new HashMap<Integer, String>(); money = DataAnalyseControl.getCurrentMonthIncome(DetailActivity.this);
type = DataAnalyseControl.getAllIncomeType(DetailActivity.this); if (money != null && type != null) {
chartView.removeAllViews();
if (graphicView == null) {
graphicView = paintPieChart(money, type);
graphicView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,//
LayoutParams.MATCH_PARENT));
chartView.addView(graphicView);
} else {
graphicView.repaint();
} } else {
chartView.removeAllViews();
View view = LayoutInflater.from(this)//
.inflate(R.layout.data_empty, //
null, false);
view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,//
LayoutParams.MATCH_PARENT));
chartView.addView(view);
}
} private void initExpensesView() {
Map<String, Float> money = new HashMap<String, Float>();
Map<Integer, String> type = new HashMap<Integer, String>(); money = DataAnalyseControl.getCurrentMonthExpenses(DetailActivity.this);
type = DataAnalyseControl.getAllExpensesType(DetailActivity.this); if (money != null && type != null) {
chartView.removeAllViews();
Log.d(TAG, "initExpensesView --> " + 1);
if (graphicView == null) {
Log.d(TAG, "initExpensesView --> " + 2);
graphicView = paintPieChart(money, type);
graphicView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,//
LayoutParams.MATCH_PARENT));
chartView.addView(graphicView);
Log.d(TAG, "initExpensesView --> " + 3);
} else {
graphicView.repaint();
}
} else {
chartView.removeAllViews();
// TODO 数据为空时处理
View view = LayoutInflater.from(this)//
.inflate(R.layout.data_empty, //
null, false);
view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,//
LayoutParams.MATCH_PARENT));
chartView.addView(view);
} } /**
* @author zhx 2012-5-8 下午5:25:53
*
* @param money
* @param type
*
* @return void
*
* Description: 画饼状图
*/
private GraphicalView paintPieChart(Map<String, Float> money,//
Map<Integer, String> type) { if (money.size() > 0) {
for (int i = 0; i < type.size(); i++) {
if (money.containsKey(type.get(i))) {
mSeries.add(type.get(i), money.get(type.get(i)));
SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();
renderer.setColor(COLORS[(mSeries.getItemCount() - 1) % COLORS.length]);
mRenderer.addSeriesRenderer(renderer);
}
}
}
// graphicView = ChartFactory.getPieChartView(this, mSeries, mRenderer);
// mRenderer.setClickEnabled(true);
// mRenderer.setSelectableBuffer(10);
// graphicView.setOnClickListener(new View.OnClickListener() {
//
// public void onClick(View arg0) {
// SeriesSelection seriesSelection = graphicView.getCurrentSeriesAndPoint();
// if (seriesSelection != null) {
// ToastUtil.makeText(DetailActivity.this, //
// getString(R.string.data_analyse_select) //
// + seriesSelection.getValue());
// }
// }
// });
return ChartFactory.getPieChartView(this, mSeries, mRenderer);
} @Override
protected void onResume() {
super.onResume(); }}graphicView可以显示出来,是个饼状图。但显示出来1~2秒后就报异常了
chartView = new LinearLayout(getApplicationContext());
chartView = (LinearLayout) findViewById(R.id.detail_chart_show);