onButtonClcick到按钮index,应显示一个graph,该URL从URL获取数据。我已经使用AsyncTask相同。

我陷入两种方法之间。

1)如果我在afterload()按钮单击上调用的postExecute()中调用index方法,我将得到如下所示的第一个屏幕截图,即GRAPH未显示。

我对其进行了调试,以发现调用了afterload()方法,但仍未显示图形。

2)如果我没有在afterload()中调用postExecute()方法。相反,我将afterload()方法的所有内容复制到onCreate()方法的新类graphView中,然后GRAPH正在显示。如第二个屏幕截图所示

但是,像onlistickenlisters一样,所有其他功能都将丢失过滤列表数据。 (请注意,第二个屏幕截图表中未显示)。这是由于在第二个活动中使用了setContentView(),因此布局已重新启动,因此控件进入了第二个活动。

任何帮助都会节省生命!

数据附件

    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
    }


在单击INDEX按钮之前和之后进行第一和第二屏幕快照。

最佳答案

在afterload()方法的末尾使用mySimpleXYPlot.redraw()或mySimpleXYPlot.postRedraw()。

如果您看到源代码:redraw()方法使视图无效,那么将显示您的数据。

10-06 02:37