метод postExecute AsyncTask не работает должным образом - PullRequest
2 голосов
/ 20 декабря 2011

Если я запускаю код выше и ниже в отдельных проектах, это работает. Но когда я пытаюсь интегрировать их, график не заполняется.

Причина, по которой я чувствую, заключается в 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;
            }
        }
    }
}

1 Ответ

1 голос
/ 23 декабря 2011

Я создал другой класс для построения графика.

Вызовите этот класс из текущего класса, используя намерение.Передал эти два массива в класс графа, используя свойство intent.построил график во втором упражнении, используя два массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...