Java AsyncTask的postExecute方法工作不正常
如果我在不同的项目中运行上面和下面的代码,它就会工作。但是,当我尝试集成它们时,图形没有填充 我感觉的原因是在Java AsyncTask的postExecute方法工作不正常,java,android,graph,android-asynctask,Java,Android,Graph,Android Asynctask,如果我在不同的项目中运行上面和下面的代码,它就会工作。但是,当我尝试集成它们时,图形没有填充 我感觉的原因是在postExecute方法中,因为 需要注意的一件重要事情是当我运行任何其他随机项目时,对其进行一些更改,然后重新启动该应用程序,然后在图中显示一段时间。在那一刻,产出正在完美实现 但是如果我运行Graph.java,它将显示空白图形 编辑 {{1代码是从URL获取数据并将其存储在各种数组中 第二个代码是在图形上显示数据 在下面的代码中,传递给graph的两个数组包含静态值,它们应该从第
postExecute
方法中,因为
需要注意的一件重要事情是当我运行任何其他随机项目时,对其进行一些更改,然后重新启动该应用程序,然后在图中显示一段时间。在那一刻,产出正在完美实现
但是如果我运行Graph.java,它将显示空白图形
编辑
{{1代码是从URL获取数据并将其存储在各种数组中
第二个代码是在图形上显示数据
在下面的代码中,传递给graph的两个数组包含静态值,它们应该从第一个代码中获取值。}
请帮忙
Graph.java
public class Graph extends Activity {
String arr[], arr1[], temp[], company[], current[], close[], time[];
int sub;
String s1;
String[] verlabels = new String[] { " y1 ", " y2 ", " y3 " };
String[] horlabels = new String[] { " x1 ", " x2 ", " x3 ", " x4 " };
private XYPlot mySimpleXYPlot;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DownloadWebPageTask task = new DownloadWebPageTask();
task.execute(new String[] { "http://abc.com/stockcharts.aspx?id=Reliance" });
}
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = "";
for (String url : urls) {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(
new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
response += s;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return response;
}
@Override
protected void onPostExecute(String result) {
sub = result.lastIndexOf('@', result.length());
s1 = result.substring(0, sub + 2);
arr1 = s1.split("@");
arr = new String[arr1.length - 1];
company = new String[arr.length];
current = new String[arr.length];
close = new String[arr.length];
time = new String[arr.length];
for (int j = 0; j < arr.length; j++) {
arr[j] = arr1[j];
}
for (int i = 0; i < arr.length; i++) {
temp = arr[i].split(";");
company[i] = temp[0];
current[i] = temp[1];
close[i] = temp[2];
time[i] = temp[3];
}
我创建了另一个用于绘制图形的类
使用intent从当前类调用该类。使用intent属性将两个数组传递给graph类。使用两个数组在第二个活动中绘制图形。尝试集成活动时是否出现错误?更具体地说,是onPostExecute方法中的错误吗?不,它没有给出错误。但只有图形的基本布局即将出现。不是填充的。是否尝试调试,结果是否包含执行后的数据?我无法说明在第二段代码中数组的使用位置。但既然您说它可以工作,只需调试以检查阵列的位置,我就可以通过日志对其进行调试。所有数组都在填充,它们不是空的,但图形没有被绘制。
mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot);
Number[] series1Numbers = { 1324266358000L, 1324266418000L,
1324266478000L, 1324266538000L, 1324266598000L,
1324266658000L, 1324266718000L, 1324266778000L,
1324266838000L, 1324266898000L, 1324266958000L };
Number[] series2Numbers = { 3, 1, 2, 9, 6, 5, 4, 3, 7, 3, 2 };
XYSeries series1 = new SimpleXYSeries(
Arrays.asList(series1Numbers),
Arrays.asList(series2Numbers),
"Company");
LineAndPointFormatter series1Format = new LineAndPointFormatter(
Color.rgb(0, 200, 0), // line color
Color.rgb(0, 100, 0), // point color
Color.rgb(150, 190, 150)); // fill color (optional)
mySimpleXYPlot.addSeries(series1, series1Format);
mySimpleXYPlot.setTicksPerRangeLabel(2);
mySimpleXYPlot.setRangeStep(XYStepMode.INCREMENT_BY_VAL, 1);
mySimpleXYPlot.setDomainValueFormat(new MyDateFormat());
mySimpleXYPlot.disableAllMarkup();
}
public class MyDateFormat extends Format {
private SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
@Override
public StringBuffer format(Object obj, StringBuffer toAppendTo,
FieldPosition pos) {
long timestamp = ((Number) obj).longValue();
Date date = new Date(timestamp);
return dateFormat.format(date, toAppendTo, pos);
}
@Override
public Object parseObject(String source, ParsePosition pos) {
return null;
}
}
}
}