여기에 세 가지 액티비티가 있습니다. 문제는 LineGraph에서 Xstring의 출력으로 null이 발생합니다. 디버그 할 때 다음과 같은 패턴이 표시됩니다.AsyncTask의 doInBackground가 호출 된 후 정확히 작동하지 않습니다
parseStrings = mJsoupAct.getOutput(); LineGraph.java
mExecute(); jsoupAct.java
새로운 Parsee(). execute(); jsoupAct.java
Log.d ("xoutputD", output + ""); jsoupAct.java
url = "http://www.google.co.in/"; 4 라인이 5 일 전에 실행되는 이유는 jsoupAct.java ...........
이제 문제는 ...입니다. 이 실행으로 인해 null을 반환하고 doInBackground을 실행합니다. 왜 이런 일이 일어나고있는거야 ???
MainActivity
public class MainActivity extends Activity {
jsoupAct mJsoupAct = new jsoupAct();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("xmain", "main");
Intent i = new Intent(getApplicationContext(), LineGraph.class);
startActivity(i);
}
}
선 그래프
public class LineGraph extends Activity {
String parseStrings;
jsoupAct mJsoupAct;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mJsoupAct = new jsoupAct();
Xparse();
}
public void Xparse() {
parseStrings = mJsoupAct.getOutput();
Log.d("xstring", parseStrings + "");
}
}
jsoupAct 최대한 멀리 볼 수
public class jsoupAct extends Activity {
public String output;
public String url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void mExecute() {
new Parsee().execute();
}
public class Parsee extends AsyncTask<String, String, String> {
protected String doInBackground(String... params) {
try {
url = "http://www.google.co.in/";
Document doc = Jsoup.connect(url).get();
String body = doc.body().text();
output = body.toString();
Log.d("xoutputD0", output + "");
} catch (IOException e) {
e.printStackTrace();
}
return output;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(output);
Log.d("xoutputD1", output + "");
}
}
public String getOutput() {
mExecute();
Log.d("xoutputD", output + "");
return output;
}
public void setOutput(String output) {
this.output = output;
}
}