Если я запускаю над и под кодом в отдельных проектах, он работает. Но когда я пытаюсь их интегрировать, график не заполняется.метод postExecute AsyncTask не работает должным образом
Причина я чувствую в postExecute
метод, потому что
Одна важная вещь, чтобы заметить это, когда я бегу любой другой случайный проект, внести некоторые изменения в нем, и перезапустить приложение, то для некоторых моментов Graph. java видно, как в фоновом режиме. В этот момент выход идет отлично.
Но если я запустил Graph.java, он показывает пустой график.
EDIT
{{первый код для извлечения данных из URL и сохранить его в различных массивах.
2-й код - это данные диаплета по графику.
В приведенном ниже коде два массива, переданные на график, содержат статические значения, они должны принимать значения из 1-го кода. }}
ПОМОГИТЕ
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];
}
.
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;
}
}
}
}
Вы получаете какую-либо ошибку, когда пытаетесь интегрировать свои действия? более конкретно, ошибки в методе onPostExecute? –
Нет, это не дает ошибок. Но приближается только базовая схема графика. Не заселенный. – GAMA
Вы пытались отлаживать, приводит ли результат к данным в post execute? Я не могу связать, где массивы используются во втором блоке кода. Но так как вы говорите, что это работает, просто отлаживайте, чтобы проверить, где массивы становятся пустыми. – Mal