在android中将值从web服务传递到条形图
我试图将两个值(即a和b值)传递到x轴和y轴,以便在android中创建条形图。但我通过使用web服务从web服务中获取a和b值。在这里,我使用SOAP方法使用web服务 在尝试了一些代码之后。我在我的日志猫上看到了这些东西。有人能告诉我如何解决这些问题吗?请给我一些建议 LOGCAT在android中将值从web服务传递到条形图,android,bar-chart,Android,Bar Chart,我试图将两个值(即a和b值)传递到x轴和y轴,以便在android中创建条形图。但我通过使用web服务从web服务中获取a和b值。在这里,我使用SOAP方法使用web服务 在尝试了一些代码之后。我在我的日志猫上看到了这些东西。有人能告诉我如何解决这些问题吗?请给我一些建议 LOGCAT 10-03 11:35:25.285: W/KeyCharacterMap(404): No keyboard for id 0 10-03 11:35:25.295: W/KeyCharacterMap(404
10-03 11:35:25.285: W/KeyCharacterMap(404): No keyboard for id 0
10-03 11:35:25.295: W/KeyCharacterMap(404): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
10-03 11:35:38.195: D/AndroidRuntime(404): Shutting down VM
10-03 11:35:38.195: W/dalvikvm(404): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
10-03 11:35:38.205: E/AndroidRuntime(404): FATAL EXCEPTION: main
10-03 11:35:38.205: E/AndroidRuntime(404): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.test_wb/com.example.test_wb.ResultActivity}: java.lang.NullPointerException
10-03 11:35:38.205: E/AndroidRuntime(404): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
10-03 11:35:38.205: E/AndroidRuntime(404): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
10-03 11:35:38.205: E/AndroidRuntime(404): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-03 11:35:38.205: E/AndroidRuntime(404): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-03 11:35:38.205: E/AndroidRuntime(404): at android.os.Handler.dispatchMessage(Handler.java:99)
10-03 11:35:38.205: E/AndroidRuntime(404): at android.os.Looper.loop(Looper.java:123)
10-03 11:35:38.205: E/AndroidRuntime(404): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-03 11:35:38.205: E/AndroidRuntime(404): at java.lang.reflect.Method.invokeNative(Native Method)
10-03 11:35:38.205: E/AndroidRuntime(404): at java.lang.reflect.Method.invoke(Method.java:521)
10-03 11:35:38.205: E/AndroidRuntime(404): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-03 11:35:38.205: E/AndroidRuntime(404): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-03 11:35:38.205: E/AndroidRuntime(404): at dalvik.system.NativeStart.main(Native Method)
10-03 11:35:38.205: E/AndroidRuntime(404): Caused by: java.lang.NullPointerException
10-03 11:35:38.205: E/AndroidRuntime(404): at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:263)
10-03 11:35:38.205: E/AndroidRuntime(404): at java.lang.Double.parseDouble(Double.java:287)
10-03 11:35:38.205: E/AndroidRuntime(404): at com.example.test_wb.ResultActivity.<init>(ResultActivity.java:25)
10-03 11:35:38.205: E/AndroidRuntime(404): at java.lang.Class.newInstanceImpl(Native Method)
10-03 11:35:38.205: E/AndroidRuntime(404): at java.lang.Class.newInstance(Class.java:1429)
10-03 11:35:38.205: E/AndroidRuntime(404): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
10-03 11:35:38.205: E/AndroidRuntime(404): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
10-03 11:35:38.205: E/AndroidRuntime(404): ... 11 more
10-03 11:35:25.285:W/KeyCharacterMap(404):id 0没有键盘
10-03 11:35:25.295:W/KeyCharacterMap(404):使用默认keymap:/system/usr/keychars/qwerty.kcm.bin
10-03 11:35:38.195:D/AndroidRuntime(404):关闭虚拟机
10-03 11:35:38.195:W/dalvikvm(404):threadid=1:线程退出时出现未捕获异常(组=0x4001d800)
10-03 11:35:38.205:E/AndroidRuntime(404):致命异常:主
10-03 11:35:38.205:E/AndroidRuntime(404):java.lang.RuntimeException:无法实例化活动组件信息{com.example.test_wb/com.example.test_wb.ResultActivity}:java.lang.NullPointerException
10-03 11:35:38.205:E/AndroidRuntime(404):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
10-03 11:35:38.205:E/AndroidRuntime(404):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
10-03 11:35:38.205:E/AndroidRuntime(404):在android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-03 11:35:38.205:E/AndroidRuntime(404):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-03 11:35:38.205:E/AndroidRuntime(404):在android.os.Handler.dispatchMessage(Handler.java:99)上
10-03 11:35:38.205:E/AndroidRuntime(404):在android.os.Looper.loop(Looper.java:123)
10-03 11:35:38.205:E/AndroidRuntime(404):位于android.app.ActivityThread.main(ActivityThread.java:4627)
10-03 11:35:38.205:E/AndroidRuntime(404):在java.lang.reflect.Method.invokenactive(本机方法)
10-03 11:35:38.205:E/AndroidRuntime(404):在java.lang.reflect.Method.invoke(Method.java:521)
10-03 11:35:38.205:E/AndroidRuntime(404):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-03 11:35:38.205:E/AndroidRuntime(404):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-03 11:35:38.205:E/AndroidRuntime(404):在dalvik.system.NativeStart.main(本机方法)
10-03 11:35:38.205:E/AndroidRuntime(404):由以下原因引起:java.lang.NullPointerException
10-03 11:35:38.205:E/AndroidRuntime(404):位于org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:263)
10-03 11:35:38.205:E/AndroidRuntime(404):at java.lang.Double.parseDouble(Double.java:287)
10-03 11:35:38.205:E/AndroidRuntime(404):在com.example.test_wb.ResultActivity.(ResultActivity.java:25)
10-03 11:35:38.205:E/AndroidRuntime(404):位于java.lang.Class.newInstanceImpl(本机方法)
10-03 11:35:38.205:E/AndroidRuntime(404):位于java.lang.Class.newInstance(Class.java:1429)
10-03 11:35:38.205:E/AndroidRuntime(404):在android.app.Instrumentation.newActivity(Instrumentation.java:1021)上
10-03 11:35:38.205:E/AndroidRuntime(404):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
10-03 11:35:38.205:E/AndroidRuntime(404):。。。还有11个
Main_WB.java
public class Main_WB extends Activity
{
EditText edt1, edt2;
// TextView txt_1;
Button btn;
ArrayList<String> result;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edt1 = (EditText) findViewById(R.id.editText1);
edt2 = (EditText) findViewById(R.id.editText2);
btn = (Button) findViewById(R.id.button1);
result = new ArrayList<String>();
btn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
result.addAll(getTMSChart(edt1.getText().toString(), edt2.getText().toString()));
Intent in = new Intent(getApplicationContext(), ResultActivity.class);
in.putExtra("gotonextpageX", result.get(0));
in.putExtra("gotonextpageY", result.get(1));
startActivity(in);
}
});
}
private ArrayList<String> getTMSChart(String FromDate, String ToDate)
{
// txt_1 = (TextView)findViewById(R.id.textView1);
System.setProperty("http.keepAlive", "false");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
String NAMESPACE = "http://tempuri.org/";
String URL = "http://54.251.60.177/TMSOrdersService/TMSDetails.asmx";
String METHOD = "GetTMSChart";
SoapObject request = new SoapObject(NAMESPACE, METHOD);
request.addProperty("FromDate", FromDate);
request.addProperty("ToDate", ToDate);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
String x = "", y = "";
ArrayList<String> stringResult = new ArrayList<String>();
try
{
androidHttpTransport.call(NAMESPACE + METHOD, envelope);
SoapObject result = (SoapObject) envelope.bodyIn;
SoapObject root = (SoapObject) ((SoapObject) (result).getProperty(0)).getProperty("NewDataSet");
int tablesCount = root.getPropertyCount();
for (int i = 0; i < tablesCount; i++)
{
SoapObject table = (SoapObject) root.getProperty(i);
int propertyCount = table.getPropertyCount();
for (int j = 0; j < propertyCount; j++)
{
stringResult.add(table.getPropertyAsString("Order_No").toString());
stringResult.add(table.getPropertyAsString("Freight_Rate").toString());
}
}
}
catch (Exception e)
{
}
return stringResult;
}
}
public class ResultActivity extends Activity
{
TextView txt1,txt2;
String a,b;
double x_axis = Double.parseDouble(a); // Type casting
double y_axis = Double.parseDouble(b); // Type casting
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
Bundle extras = getIntent().getExtras();
if(extras != null)
{
a = extras.getString("gotonextpageX");
b = extras.getString("gotonextpageY");
}
else
{
}
draw();
//txt1 = (TextView)findViewById(R.id.txtVw);
//txt2 = (TextView)findViewById(R.id.txtVw2);
//txt1.setText(x);
//txt2.setText(y);
}
public void draw()
{
String[] titles = new String[] { "Order's profit of the year", " " };
List<double[]> values = new ArrayList<double[]>();
values.add(new double[] { y_axis });
int[] colors = new int[] { Color.BLACK, Color.WHITE};
XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
renderer.setOrientation(Orientation.HORIZONTAL);
setChartSettings(renderer, "Profit for the year 2012", " ", " ",0,x_axis, 0,y_axis, Color.GRAY, Color.LTGRAY);
renderer.setXLabels(1);
renderer.addXTextLabel(100, "x");
//renderer.addXTextLabel(200, "ord2");
//renderer.addXTextLabel(300, "ord3");
//renderer.addXTextLabel(400, "ord4");
//renderer.setPanEnabled(true, false);
int length = renderer.getSeriesRendererCount();
for (int i = 0; i < length; i++)
{
SimpleSeriesRenderer seriesRenderer = renderer.getSeriesRendererAt(i);
seriesRenderer.setDisplayChartValues(true);
}
ChartFactory.getBarChartIntent(this, buildBarDataset(titles, values), renderer,Type.DEFAULT);
}
protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors)
{
// creates a SeriesRenderer and initializes it with useful default values as well as colors
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(15);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
int length = colors.length;
for (int i = 0; i < length; i++)
{
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(colors[i]);
renderer.addSeriesRenderer(r);
}
return renderer;
}
protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle,
String yTitle, double xMin, double x_axis2, double yMin, double yMax, int axesColor,int labelsColor)
{
// sets lots of default values for this renderer
renderer.setChartTitle(title);
renderer.setXTitle(xTitle);
renderer.setYTitle(yTitle);
renderer.setXAxisMin(xMin);
//renderer.setXAxisMax(x2);
renderer.setYAxisMin(yMin);
renderer.setYAxisMax(yMax);
renderer.setAxesColor(axesColor);
renderer.setLabelsColor(labelsColor);
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.GRAY);
}
protected XYMultipleSeriesDataset buildBarDataset(String[] titles, List<double[]> values)
{
// adds the axis titles and values into the data-set
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
int length = titles.length;
for (int i = 0; i < length; i++)
{
CategorySeries series = new CategorySeries(titles[i]);
double[] v = values.get(i);
int seriesLength = v.length;
for (int k = 0; k < seriesLength; k++)
{
series.add(v[k]);
}
dataset.addSeries(series.toXYSeries());
}
return dataset;
} }
public类主\u WB扩展活动
{
编辑文本edt1、edt2;
//TextView txt_1;
按钮btn;
阵列列表结果;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edt1=(EditText)findViewById(R.id.editText1);
edt2=(EditText)findViewById(R.id.editText2);
btn=(按钮)findViewById(R.id.button1);
结果=新的ArrayList();
btn.setOnClickListener(新视图.OnClickListener()
{
公共void onClick(视图v)
{
addAll(gettmchart(edt1.getText().toString(),edt2.getText().toString());
Intent in=newintent(getApplicationContext(),ResultActivity.class);
in.putExtra(“gotonextpageX”,result.get(0));
in.putExtra(“gotonextpageY”,result.get(1));
星触觉(in);
}
});
}
私有ArrayList getTMSChart(字符串FromDate,字符串ToDate)
{
//txt_1=(TextView)findViewById(R.id.textView1);
set属性(“http.keepAlive”、“false”);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
字符串命名空间=”http://tempuri.org/";
字符串URL=”http://54.251.60.177/TMSOrdersService/TMSDetails.asmx";
String METHOD=“GetTMSChart”;
SoapObject请求=新的SoapObject(名称空间、方法);
请求。添加属性(“FromDate”,FromDate);
addProperty(“ToDate”,ToDate);
envelope.setOutputSoapObject(请求);
HttpTransportSE androidHttpTransport=新的HttpTransportSE(URL);
字符串x=“”,y=“”;
ArrayList stringResult=新的ArrayList();
尝试
{
调用(名称空间+方法,信封);
SoapObject结果=(SoapObject)envelope.bodyIn;
SoapObject根=(SoapObject)((SoapObject)(结果).getProperty(0)).getProperty(“NewDataSet”);
int tableCount=root.getPropertyCount();
for(int i=0;i
ResultActivity.java
public class Main_WB extends Activity
{
EditText edt1, edt2;
// TextView txt_1;
Button btn;
ArrayList<String> result;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edt1 = (EditText) findViewById(R.id.editText1);
edt2 = (EditText) findViewById(R.id.editText2);
btn = (Button) findViewById(R.id.button1);
result = new ArrayList<String>();
btn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
result.addAll(getTMSChart(edt1.getText().toString(), edt2.getText().toString()));
Intent in = new Intent(getApplicationContext(), ResultActivity.class);
in.putExtra("gotonextpageX", result.get(0));
in.putExtra("gotonextpageY", result.get(1));
startActivity(in);
}
});
}
private ArrayList<String> getTMSChart(String FromDate, String ToDate)
{
// txt_1 = (TextView)findViewById(R.id.textView1);
System.setProperty("http.keepAlive", "false");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
String NAMESPACE = "http://tempuri.org/";
String URL = "http://54.251.60.177/TMSOrdersService/TMSDetails.asmx";
String METHOD = "GetTMSChart";
SoapObject request = new SoapObject(NAMESPACE, METHOD);
request.addProperty("FromDate", FromDate);
request.addProperty("ToDate", ToDate);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
String x = "", y = "";
ArrayList<String> stringResult = new ArrayList<String>();
try
{
androidHttpTransport.call(NAMESPACE + METHOD, envelope);
SoapObject result = (SoapObject) envelope.bodyIn;
SoapObject root = (SoapObject) ((SoapObject) (result).getProperty(0)).getProperty("NewDataSet");
int tablesCount = root.getPropertyCount();
for (int i = 0; i < tablesCount; i++)
{
SoapObject table = (SoapObject) root.getProperty(i);
int propertyCount = table.getPropertyCount();
for (int j = 0; j < propertyCount; j++)
{
stringResult.add(table.getPropertyAsString("Order_No").toString());
stringResult.add(table.getPropertyAsString("Freight_Rate").toString());
}
}
}
catch (Exception e)
{
}
return stringResult;
}
}
public class ResultActivity extends Activity
{
TextView txt1,txt2;
String a,b;
double x_axis = Double.parseDouble(a); // Type casting
double y_axis = Double.parseDouble(b); // Type casting
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
Bundle extras = getIntent().getExtras();
if(extras != null)
{
a = extras.getString("gotonextpageX");
b = extras.getString("gotonextpageY");
}
else
{
}
draw();
//txt1 = (TextView)findViewById(R.id.txtVw);
//txt2 = (TextView)findViewById(R.id.txtVw2);
//txt1.setText(x);
//txt2.setText(y);
}
public void draw()
{
String[] titles = new String[] { "Order's profit of the year", " " };
List<double[]> values = new ArrayList<double[]>();
values.add(new double[] { y_axis });
int[] colors = new int[] { Color.BLACK, Color.WHITE};
XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
renderer.setOrientation(Orientation.HORIZONTAL);
setChartSettings(renderer, "Profit for the year 2012", " ", " ",0,x_axis, 0,y_axis, Color.GRAY, Color.LTGRAY);
renderer.setXLabels(1);
renderer.addXTextLabel(100, "x");
//renderer.addXTextLabel(200, "ord2");
//renderer.addXTextLabel(300, "ord3");
//renderer.addXTextLabel(400, "ord4");
//renderer.setPanEnabled(true, false);
int length = renderer.getSeriesRendererCount();
for (int i = 0; i < length; i++)
{
SimpleSeriesRenderer seriesRenderer = renderer.getSeriesRendererAt(i);
seriesRenderer.setDisplayChartValues(true);
}
ChartFactory.getBarChartIntent(this, buildBarDataset(titles, values), renderer,Type.DEFAULT);
}
protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors)
{
// creates a SeriesRenderer and initializes it with useful default values as well as colors
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(15);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
int length = colors.length;
for (int i = 0; i < length; i++)
{
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(colors[i]);
renderer.addSeriesRenderer(r);
}
return renderer;
}
protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle,
String yTitle, double xMin, double x_axis2, double yMin, double yMax, int axesColor,int labelsColor)
{
// sets lots of default values for this renderer
renderer.setChartTitle(title);
renderer.setXTitle(xTitle);
renderer.setYTitle(yTitle);
renderer.setXAxisMin(xMin);
//renderer.setXAxisMax(x2);
renderer.setYAxisMin(yMin);
renderer.setYAxisMax(yMax);
renderer.setAxesColor(axesColor);
renderer.setLabelsColor(labelsColor);
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.GRAY);
}
protected XYMultipleSeriesDataset buildBarDataset(String[] titles, List<double[]> values)
{
// adds the axis titles and values into the data-set
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
int length = titles.length;
for (int i = 0; i < length; i++)
{
CategorySeries series = new CategorySeries(titles[i]);
double[] v = values.get(i);
int seriesLength = v.length;
for (int k = 0; k < seriesLength; k++)
{
series.add(v[k]);
}
dataset.addSeries(series.toXYSeries());
}
return dataset;
} }
公共类结果性扩展活动
{
文本视图txt1、txt2;
a、b串;
双x_轴=double.parseDouble(a);//类型转换
双y_轴=double.parseDouble(b);//类型转换
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
Bundle extras=getIntent().getExtra
if(extras != null)
{
a = extras.getString("gotonextpageX");
b = extras.getString("gotonextpageY");
double x_axis = Double.parseDouble(a); // Type casting
double y_axis = Double.parseDouble(b); // Type casting
}