2011-12-20 5 views
2

Если я запускаю над и под кодом в отдельных проектах, он работает. Но когда я пытаюсь их интегрировать, график не заполняется.метод 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; 
      } 
     } 
    } 
} 
+0

Вы получаете какую-либо ошибку, когда пытаетесь интегрировать свои действия? более конкретно, ошибки в методе onPostExecute? –

+0

Нет, это не дает ошибок. Но приближается только базовая схема графика. Не заселенный. – GAMA

+0

Вы пытались отлаживать, приводит ли результат к данным в post execute? Я не могу связать, где массивы используются во втором блоке кода. Но так как вы говорите, что это работает, просто отлаживайте, чтобы проверить, где массивы становятся пустыми. – Mal

ответ

1

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

Назовите этот класс из текущего класса, используя намерение. Передал два массива в класс графа, используя свойство намерения. построил график во 2-й операции, используя два массива.

Смежные вопросы