2011-12-21 2 views
1

onButtonClcick 버튼을 입력하면 URL에서 데이터를 가져 오는 A 이 표시됩니다. 같은 번호로 AsyncTask을 사용했습니다.OnPostExecute가 작동하지 않고 그래프를 그릴 수 없습니다. 에

나는 두 가지 접근 방식 사이에 갇혀있다. 내가 index 버튼 클릭에서 호출 postExecute()afterload() 메서드를 호출 할 경우, 즉 그래프 아래 그림과 같이

1), 난 그냥 첫번째 스크린 샷을 받고 있어요는 표시 못하고있다.

afterload() 메서드가 호출되었지만 여전히 그래프가 표시되지 않았다는 것을 찾기 위해 디버깅했습니다.

2) afterload() 메서드를 postExecute()에 전화하지 않는 경우. 대신 afterload() 메서드의 모든 내용을 onCreate() 메서드의 새 클래스 graphView에 복사 한 다음 그래픽이 표시되는입니다. 두 번째 스크린 샷

but 다른 모든 기능은 ONCLICKLISTENERS와 같으며 필터링 목록 데이터는입니다. (두 번째 스크린 샷 테이블이 표시되지 않음에 유의하십시오). 이것은 두 번째 활동에서 setContentView()을 사용하는 것이므로 레이아웃이 다시 시작되어 두 번째 활동이 시작됩니다.

아무 도움도 생명을 구하지 못할 것입니다 !!!

DataAttach.java

public class DataAttach extends Activity { 
     //ALL VARIABLES DECLARED 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      init(); 
     } 

     public void init() { 
      //ALL FINDBYVIEWID COMMANDS 

      DownloadWebPageTask task = new DownloadWebPageTask(); 
      task.execute(new String[] { "http://abc.com/" }); 

       ed.addTextChangedListener(new TextWatcher() { 

        public void onTextChanged(CharSequence s, int start, 
          int before, int count) { 
         //filtering listview data 
        } 
       }); 

       lsym.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
        public void onItemClick(AdapterView<?> parent, View view, 
          int position, long id) { 

        } 
       }); 

       btnindex.setOnClickListener(new Button.OnClickListener() { 
        public void onClick(View v) { 

         mySimpleXYPlot.setVisibility(View.VISIBLE); 
         WebPageTask task1 = new WebPageTask(); 
         task1.execute(new String[] { "http://pqr.com/" }); 
        } 
       }); 

       btngainer.setOnClickListener(new Button.OnClickListener() { 
        public void onClick(View v) { 
         DownloadWebPageTask task = new DownloadWebPageTask(); 
         task.execute(new String[] { "http://xyz.com/" }); 
        } 
       }); 

       btnloser.setOnClickListener(new Button.OnClickListener() { 
        public void onClick(View v) { 
         DownloadWebPageTask task = new DownloadWebPageTask(); 
         task.execute(new String[] { "http://ijk.com/" }); 
        } 
       }); 

      finally { 
       dbM.close(); 
      } 
     } 

     private class DownloadWebPageTask extends AsyncTask<String, Void, String> { 
      //DO SOMETHING 
      } 

      @Override 
      protected void onPostExecute(String result) { 
       //DO SOMETHING 
      } 
     } 

     private class WebPageTask extends AsyncTask<String, Void, String> { 
      @Override 
      protected String doInBackground(String... urls) { 
        //FETCHING DATA FROM URL 
      } 

      @Override 
      protected void onPostExecute(String result) { 

       //POPULATING 'time' & 'current' ARRAYS 

       afterload(time, current); 
    //============================================================================ 
    //============================================================================ 
//IF I USE BELOW COMMENTED CODE THEN IT DISPLAYS GRAPH BUT ALL THE ONCLICKLISTENERS DOESN'T WORK. 
    //============================================================================ 
    //============================================================================ 
       // Bundle b = new Bundle(); 
       // b.putStringArray("time", time); 
       // b.putStringArray("current", current); 
       // 
       // Intent i = new Intent(getApplicationContext(), DrawGraph.class); 
       // i.putExtras(b); 
       // DataAttach.this.startActivity(i); 
      } 

      public void afterload(String[] time, String[] current) { 

      //POPULATING 'timenumber' & 'currentnumber' ARRAYS 

       Number[] series1Numbers = timenumber; 
       Number[] series2Numbers = currentnumber; 

       XYSeries series1 = new SimpleXYSeries(
         Arrays.asList(series1Numbers), 
         Arrays.asList(series2Numbers), "Reliance"); 

       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.setTicksPerDomainLabel(2); 
       mySimpleXYPlot.setRangeStep(XYStepMode.INCREMENT_BY_VAL, 1); 
       mySimpleXYPlot.setDomainStep(XYStepMode.SUBDIVIDE, 10); 
       mySimpleXYPlot.setDomainValueFormat(new MyDateFormat()); 
       mySimpleXYPlot.disableAllMarkup(); 
      } 
     } 

     public class MyDateFormat extends Format { 
      //CONVERTING DATE FORMAT 
    } 

1ST & 2ND 스크린 샷 INDEX 버튼을 클릭 한 후 & 전에 가져옵니다. 후 부하() 메소드의 끝에

SCREENSHOT

+0

그래프를 다른 포함 된 레이아웃으로 옮길 수 있습니다. 목록 데이터를 플러시하지 않을 수도 있습니다. – Yahor10

+0

어떤 종류의 ** mySimpleXYPlot **? – NOSTRA

+0

@ NOSTRA XYPlot. 나는 안드로이드 음모를 사용하고 필요한 라이브러리를 가져 왔습니다. – GAMA

답변

0

사용 mySimpleXYPlot.redraw() 또는 mySimpleXYPlot.postRedraw().

소스가 표시되면 redraw() 메서드가보기를 무효화하므로 데이터가 표시됩니다.

관련 문제