Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t访问不同类中的方法/变量_Java_Android - Fatal编程技术网

Java Can';t访问不同类中的方法/变量

Java Can';t访问不同类中的方法/变量,java,android,Java,Android,我试图将此链接的主体存储在字符串HTML中,然后将其加载到WebView。(使用Jsoup解析代码)。当我按下按钮时,调试器显示字符串HTML=re.fixCode()并显示“调试当前指令指针” 我已经尝试了很多方法,比如在方法中传递字符串,以及按原样传递字符串。但同样的事情一次又一次地发生。我的结论是它不会将方法/变量传递给我的其他类?(希望你能理解最后一点) 如果是这样,我如何访问它们?通过意图 因此,为了清楚起见,我想获取主体,将其传递给字符串,然后将其加载到WebView中。谢谢 主类

我试图将此链接的主体存储在字符串HTML中,然后将其加载到WebView。(使用Jsoup解析代码)。当我按下按钮时,调试器显示字符串HTML=re.fixCode()并显示“调试当前指令指针”

我已经尝试了很多方法,比如在方法中传递字符串,以及按原样传递字符串。但同样的事情一次又一次地发生。我的结论是它不会将方法/变量传递给我的其他类?(希望你能理解最后一点)

如果是这样,我如何访问它们?通过意图

因此,为了清楚起见,我想获取主体,将其传递给字符串,然后将其加载到WebView中。谢谢

主类

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);
    }
}
请求任务类

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();

    }

    }
package com.dir.schema;
导入java.io.ByteArrayOutputStream;
导入java.io.IOException;
导入org.apache.http.HttpResponse;
导入org.apache.http.HttpStatus;
导入org.apache.http.StatusLine;
导入org.apache.http.client.ClientProtocolException;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
导入android.os.AsyncTask;
公共类RequestTask扩展了AsyncTask{
公共字符串html,fixedHtml;
@凌驾
受保护的字符串doInBackground(字符串…uri){
HttpClient HttpClient=新的DefaultHttpClient();
HttpResponse响应;
字符串responseString=null;
试一试{
response=httpclient.execute(新的HttpGet(uri[0]);
StatusLine StatusLine=response.getStatusLine();
if(statusLine.getStatusCode()==HttpStatus.SC\u OK){
ByteArrayOutputStream out=新建ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
responseString=out.toString();
}否则{
//关闭连接。
response.getEntity().getContent().close();
抛出新IOException(statusLine.getReasonPhrase());
}
}捕获(客户端协议例外e){
//处理问题。。
}捕获(IOE异常){
//处理问题。。
}
回报率;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
//做任何有反应的事。。
html=结果;
fixCode();
}
公共字符串fixCode(){
Document doc=Jsoup.parse(html);
返回fixedHtml=doc.body().toString();
}
}

您正在调用re.fixCode(),但是re没有设置任何值。我希望您在这一点上得到一个空指针错误

我想您应该像这样重写onClick()方法:

public void onClick(View v) {
    re = new RequestTask();
    re.execute(uri);
    loadWeb();
}

你有实际的错误吗?如果是,是什么?如果是NPE,是
doc
还是
doc.body()?如果不是,你确定你不是无意中在那里设置了一个断点吗?@JasonC不是,NPE doc和doc.body()有一个值,我选中了。当我运行它时,它会说“这种启动是在挂起时打开Dubug透视图的配置”注意:我假设您已经控制了潜在的比赛条件?我认为可能会在RequestTask完成执行之前调用loadWeb()。那会是个问题吗?是的,那可能是个问题。我如何解决它?通过执行一个线程,然后休眠(1000)并让RequestTask完成?从onPostExecute()调用loadWeb()可能会达到这个目的。当试图避免种族冲突时,睡觉从来都不是一个好主意,尤其是在互联网方面。