Если я запускаю код выше и ниже в отдельных проектах, это работает. Но когда я пытаюсь интегрировать их, график не заполняется.
Причина, по которой я чувствую, заключается в postExecute
методе, потому что
Одна важная вещь, на которую следует обратить внимание, это , когда я запускаю любой другой случайный проект, вносим в него некоторые изменения и перезапускаю приложение, а затем на несколько мгновений Graph.java отображается, как оно в фоновом режиме. В этот момент вывод идет идеально.
Но если я запускаю Graph.java , он показывает пустой график.
EDIT
{{1-й код предназначен для извлечения данных из 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;
}
}
}
}