이 링크의 본문을 String HTML에 저장하고 WebView에로드하려고합니다. (코드 구문 분석은 Jsoup로 끝난다.) 버튼을 누르면 디버거가 나를 보여줍니다 String HTML = re.fixCode(); 그리고 "Debug Current Instruction Pointer"라고 말합니다.다른 클래스의 메서드/변수에 액세스 할 수 없습니다.
나는 문자열을 메서드에 전달하고 문자열을 전달하는 등 많은 작업을 시도했습니다. 그러나 똑같은 일이 반복해서 일어납니다. 내 결론은 메서드/변수를 다른 클래스로 전달하지 않는다는 것입니다. (당신이 그 마지막 비트를 이해하기를 바랍니다)
그리고 만약 내가 그들을 어떻게 액세스합니까? 의도를 통해?
그래서 몸을 가져 와서 문자열로 전달한 다음 WebView에로드하고 싶습니다. 감사!
Main 클래스
public class MainActivity extends Activity {
private String uri = "http://www.novasoftware.se/webviewer/%28S%28muz0tu55twfd43zkqrlejb55%29%29/design1.aspx?schoolid=18200&code=83310";
private RequestTask re;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button) findViewById(R.id.button1);
final WebView web = (WebView) findViewById(R.id.webView1);
WebSettings webSettings = web.getSettings();
webSettings.setJavaScriptEnabled(true);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new RequestTask().execute(uri);
loadWeb();
}
});
}
private void loadWeb() {
**String HTML = re.fixCode();**
System.out.println(HTML);
// web.loadData(re.fixedHtml, "text/html", null);
}
}
RequestTask 클래스
package com.dir.schema;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import android.os.AsyncTask;
public class RequestTask extends AsyncTask<String, String, String>{
public String html, fixedHtml;
@Override
protected String doInBackground(String... uri) {
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response;
String responseString = null;
try {
response = httpclient.execute(new HttpGet(uri[0]));
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() == HttpStatus.SC_OK){
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
responseString = out.toString();
} else{
//Closes the connection.
response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
}
} catch (ClientProtocolException e) {
//TODO Handle problems..
} catch (IOException e) {
//TODO Handle problems..
}
return responseString;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//Do anything with response..
html = result;
fixCode();
}
public String fixCode() {
Document doc = Jsoup.parse(html);
return fixedHtml = doc.body().toString();
}
}
당신이 실제 오류를받을 수 있나요? 그렇다면 무엇입니까? 그것이 NPE라면'doc' 또는'doc.body()''null'입니까? 그렇지 않다면 실수로 실수로 중단 점을 설정하지 않았습니까? –
@JasonC NPE doc 및 doc.body()에 값이 있습니다. 확인했습니다. 실행할 때 "이 종류의 실행은 일시 중지되었을 때 Dubug 퍼스펙티브를 여는 구성입니다." – Donald