Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.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 在oncreate中使用assynctask的变量_Java_Android_Android Asynctask - Fatal编程技术网

Java 在oncreate中使用assynctask的变量

Java 在oncreate中使用assynctask的变量,java,android,android-asynctask,Java,Android,Android Asynctask,我终于能够与我的网络服务建立连接 不,我可以读取日志中的数据 之后,我根据需要拆分json: (这里是编辑前的代码) 但我没有去工作的是: (这里是编辑前的代码) 似乎我不能在oncreate类中使用变量bedrijfsnaam 我的完整代码: 包com.example.deceunincktechinekers import android.app.Activity; import android.app.ProgressDialog; import android.content.Conte

我终于能够与我的网络服务建立连接

不,我可以读取日志中的数据

之后,我根据需要拆分json:

(这里是编辑前的代码)

但我没有去工作的是:

(这里是编辑前的代码)

似乎我不能在oncreate类中使用变量bedrijfsnaam

我的完整代码: 包com.example.deceunincktechinekers

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import java.io.*;
import java.util.LinkedList;
import java.util.List;

import org.apache.http.client.*;
import org.apache.http.*;
import org.json.JSONException;
import org.json.JSONObject;

 public class BTWcontrole extends Activity 
{

TextView btwuitvoer;
EditText landcode;
EditText nummer;
Button verstuur;
String land;
String num;
String antwoord;
Context btwcontrolecontext;
String jsonData;
private String bedrijfsnaam = new String();
String zoekurl = "http://www.softnaert.be/SNWebservices/SNWeb.wso/checkVat/JSON";

@Override
public void onCreate(Bundle savedInstanceState){
     super.onCreate(savedInstanceState);
        setContentView(R.layout.btwcontrole);
        btwcontrolecontext = this;
    btwuitvoer = (TextView) findViewById(R.id.resultaat);
    verstuur = (Button) findViewById(R.id.controleer);
    landcode = (EditText) findViewById(R.id.landcode);
    nummer = (EditText) findViewById(R.id.btwnr);

verstuur.setOnClickListener(new OnClickListener()
{


@Override
public void onClick(View v) {

    btwopvragen loaderTask = new btwopvragen();
    loaderTask.execute();

    land = landcode.getText().toString();
    num = nummer.getText().toString();
    Log.i("bedrijfsnaam in onclick", bedrijfsnaam);
    btwuitvoer.setText(bedrijfsnaam);   
}   
});};

  private class btwopvragen extends AsyncTask<Void, Void, Void>{

ProgressDialog dialog;

@Override
protected void onPreExecute() {
    dialog = new ProgressDialog(btwcontrolecontext);
    dialog.setTitle("btwnummer ophalen");
    dialog.show();
    super.onPreExecute();
}

@Override
protected Void doInBackground(Void... params) {
    // toegevoegde code om parameters aan de code toe te voegen
    if(!zoekurl.endsWith("?")){
            zoekurl += "?";
    };

    List<NameValuePair> parameters = new LinkedList<NameValuePair>();
    parameters.add(new BasicNameValuePair("llcountryCode", String.valueOf(land)));
    parameters.add(new BasicNameValuePair("llvatNumber", String.valueOf(num)));

    String parameterString = URLEncodedUtils.format(parameters, "utf-8");


    // effectieve http request met de parameters toegevoegd
    HttpClient client = new DefaultHttpClient();
    HttpGet aanvraag = new HttpGet(zoekurl + parameterString);


    // foutanalyse van de http request
    try
    {
        HttpResponse antwoord = client.execute(aanvraag);
        StatusLine statuslijn = antwoord.getStatusLine();
        int statuscode = statuslijn.getStatusCode();
        if(statuscode != 200){
            return null;
        }

        InputStream jsonStream = antwoord.getEntity().getContent();
        BufferedReader reader= new BufferedReader(new InputStreamReader(jsonStream));
        StringBuilder builder = new StringBuilder();
        String lijn;

        while((lijn = reader.readLine())!= null){
            builder.append(lijn);

        }

        jsonData = builder.toString();
        // met de volgende lijn is de data zichtbaar in de logcat
        Log.i("btw geretourneerde data", jsonData);

        // hier beginnen we met de json data te ontmantelen
        JSONObject json = new JSONObject(jsonData);
        String bedrijfsnaam = json.getString("sCompanyName"); 
        Log.i("bedrijfsnaam in asynctask", bedrijfsnaam);


    }
    catch (ClientProtocolException e){

        e.printStackTrace();
    }
    catch (IOException e){

        e.printStackTrace();
    }
    catch (JSONException e) {

        e.printStackTrace();
    }


    return null;
}   
@Override
protected void onPostExecute(Void result) {
    Log.i("bedrijfsnaam in onpostexecute", bedrijfsnaam);   
    dialog.dismiss();
    super.onPostExecute(result);

    }


}


}
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.client.utils.URLEncodedUtils;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.message.BasicNameValuePair;
导入java.io.*;
导入java.util.LinkedList;
导入java.util.List;
导入org.apache.http.client.*;
导入org.apache.http.*;
导入org.json.JSONException;
导入org.json.JSONObject;
公共类BTWcontrole扩展活动
{
文本视图btwuitvoer;
编辑文本土地代码;
编辑文本nummer;
钮扣;
弦地;
字符串数;
弦蚁尾;
上下文btwcontrolecontext;
字符串jsonData;
私有字符串bedrijfsnaam=新字符串();
字符串zoekurl=”http://www.softnaert.be/SNWebservices/SNWeb.wso/checkVat/JSON";
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.btwcontrole);
btwcontrolecontext=此;
btwuitvoer=(TextView)findViewById(R.id.resultaat);
verstuur=(按钮)findViewById(R.id.controleer);
landcode=(EditText)findViewById(R.id.landcode);
nummer=(EditText)findViewById(R.id.btwnr);
setOnClickListener(新的OnClickListener()
{
@凌驾
公共void onClick(视图v){
btwopvragen loaderTask=新的btwopvragen();
loaderTask.execute();
land=landcode.getText().toString();
num=nummer.getText().toString();
Log.i(“onclick中的bedrijfsnaam”,bedrijfsnaam);
btwuitvoer.setText(bedrijfsnaam);
}   
});};
私有类btwopvragen扩展异步任务{
进程对话;
@凌驾
受保护的void onPreExecute(){
dialog=新建进度对话框(btwcontrolecontext);
对话框.setTitle(“btwnummer ophalen”);
dialog.show();
super.onPreExecute();
}
@凌驾
受保护的Void doInBackground(Void…参数){
//toegevoegde代码om参数和de代码toe te voegen
如果(!zoekurl.endsWith(“?”)){
zoekurl+=“?”;
};
列表参数=新建LinkedList();
添加(新的BasicNameValuePair(“llcountryCode”,String.valueOf(land));
添加(新的BasicNameValuePair(“llvatNumber”,String.valueOf(num));
字符串参数String=URLEncodedUtils.format(参数“utf-8”);
//有效http请求符合de参数toegevoegd
HttpClient=new DefaultHttpClient();
HttpGet aanvraag=新的HttpGet(zoekurl+参数字符串);
//foutanalyse van de http请求
尝试
{
HttpResponse antwoord=client.execute(aanvraag);
StatusLine statuslijn=antwoord.getStatusLine();
int statuscode=statuslijn.getStatusCode();
如果(状态代码!=200){
返回null;
}
InputStream jsonStream=antwoord.getEntity().getContent();
BufferedReader=new BufferedReader(new InputStreamReader(jsonStream));
StringBuilder=新的StringBuilder();
字符串lijn;
而((lijn=reader.readLine())!=null){
builder.append(lijn);
}
jsonData=builder.toString();
//met de volgende lijn是logcat中的数据集
Log.i(“顺便说一句,geretourneerde数据”,jsonData);
//从一开始我们就遇到了de json data te ontmantelen

JSONObject json=新的JSONObject(jsonData); String bedrijfsnaam=json.getString(“sCompanyName”); Log.i(“异步任务中的bedrijfsnaam”,bedrijfsnaam); } 捕获(客户端协议例外e){ e、 printStackTrace(); } 捕获(IOE异常){ e、 printStackTrace(); } 捕获(JSONException e){ e、 printStackTrace(); } 返回null; } @凌驾 受保护的void onPostExecute(void结果){ Log.i(“onpostexecute中的bedrijfsnaam”,bedrijfsnaam); dialog.dismise(); super.onPostExecute(结果); } } }
bedrijfsnaam
声明为类中的字段

        private JSONObject json = new JSONObject(...);//here if exists you should use default       constructor if not, you should find a way to put an argument to it.


    ...
       @Override
    protected Void doInBackground(Void... params) {
         .......

     bedrijfsnaam = json.getJSONObject("sCompanyName");
         .....
         }
    .....

        @Override
    public void onCreate(Bundle savedInstanceState){
         ....
        public void onClick(View v) {
        antwoord = bedrijfsNaam;
                btwuitvoer.setText(antwoord)
        ....
}

将变量类成员和asynctask内部类添加到activity classi中:private JSONObject bedrijfsnaam;在我的oncreate方法之上,现在在我的Logcate中获得一个nullpointerexception,您应该首先初始化它。??对不起,我是初学者,什么是初始化?怎么做?JSONObject json=new JSONObject(jsonData)这是初始化,但我不知道jsonData变量在哪里。这些行已经在我的assynctask中:`String jsonData=builder.toString();//met de volgende lijn是de logcat Log.i中的数据zichtbaar(“btw GERTOURNEERDE data”,jsonData);JSONObject json=新的JSONObject(jsonData);JSONObject bedrijfsnaam=json.getJSONObject(“sCompanyName”)`