2011-12-21 9 views
1

onButtonClcickボタンを入力すると、URLからデータを取得するA が表示されます。私は同じのためにAsyncTaskを使用しました。OnPostExecuteが機能しておらず、グラフを描画できません。に

私は2つのアプローチの間に立ち往生しています。私はindexボタンのクリックで呼び出されpostExecute()afterload()メソッドを呼び出した場合、すなわちグラフの下に示すように

1)、私はちょうど第一のスクリーンショットを取得していますがを表示取得されていません。

私はそれをデバッグして、afterload()メソッドが呼び出されたがグラフが表示されていないことを確認しました。

2)私がafterload()メソッドをpostExecute()に呼び出していない場合。代わりにafterload()メソッドのすべてのコンテンツをonCreate()メソッドの新しいクラスgraphViewにコピーした後、というグラフィックが表示されますです。

BUT その他の機能性のような他の機能は、リストリストのデータが失われていますです。 (2番目のスクリーンショットの表は表示されないことに注意してください)。これは第2のアクティビティでsetContentView()を使用することによるものであるため、レイアウトは再起動され、制御は2番目のアクティビティになります。

すべてのヘルプは生き残りになります!

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()メソッドがビューを無効にするため、データが表示されます。

関連する問題