gpt4 book ai didi

java - OnPostExecute 不起作用,无法绘制图表

转载 作者:行者123 更新时间:2023-12-01 05:33:30 25 4
gpt4 key购买 nike

onButtonClcick按钮index ,一个graph应该显示从 URL 获取数据。我用过AsyncTask对于同样的。

我陷入了两种方法之间。

1) 如果我打电话 afterload() postExecute()中的方法调用index单击按钮,我刚刚获得第一个屏幕截图,如下所示,即图表未显示

我调试了一下,发现调用了afterload()方法,但仍然没有显示图形。

2) 如果我不打电话afterload() postExecute()中的方法。相反,我复制了 afterload() 的所有内容方法进入onCreate()方法新类graphView ,然后图表正在显示。如第二张截图所示

但是所有其他功能(例如 ONCLICKLISTENERS、过滤列表数据)都会丢失。 (请注意,在第二个屏幕截图中,表格未显示)。这是由于使用 setContentView()在第二个 Activity 中,因此布局重新启动,从而控制权转移到第二个 Activity 。

任何帮助都将挽救生命!!!

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
}

第一个和第二个屏幕截图是在点击之前和之后拍摄的 INDEX按钮。

SCREENSHOT

最佳答案

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

如果您看到来源:redraw()方法使 View 无效,因此将显示您的数据。

关于java - OnPostExecute 不起作用,无法绘制图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8586021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com