Java 无法在AsyncTask android中将值设置为onPostExcecute中的字符串

Java 无法在AsyncTask android中将值设置为onPostExcecute中的字符串,java,android,android-asynctask,Java,Android,Android Asynctask,这是用于从web读取json字符串的类 { public class JSONmethod extends AsyncTask<String,String,String> { public String result_string; @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected String doInBackground(

这是用于从web读取json字符串的类

  {

  public class JSONmethod extends AsyncTask<String,String,String>
  {

   public  String result_string;

@Override
protected void onPreExecute() {
    super.onPreExecute();

}

@Override
protected String doInBackground(String... params) {
    BufferedReader reader = null;
    HttpURLConnection connection = null;
    StringBuffer buffer;
    try {
        URL url;
        url = new URL(params[0]);
        connection = (HttpURLConnection) url.openConnection();
        connection.connect();
        InputStream stream = connection.getInputStream();
        reader = new BufferedReader(new InputStreamReader(stream));
        String line= "";
        buffer = new StringBuffer();
        while ((line = reader.readLine())!= null)
        {
            buffer.append(line);
        }
        return buffer.toString();

    }

    catch(MalformedURLException e)
    {
        e.printStackTrace();
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
    finally
    {
        if (connection != null) {
            connection.disconnect();
        }
        try {
            if (reader != null) {
                reader.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return null;

}

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);


    result_string=result;

}



public String result_string_josn()
{
    return result_string;
}
 }

}异步任务是异步任务,请阅读

仅在以下步骤之后移除
Toast

JSONmethod j = new JSONmethod();
j.execute("here is json string");
并将其放入onPostExecute:

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    Toast.makeText(this,result,Toast.LENGTH_LONG).show();
}

异步任务是异步任务,请阅读

仅在以下步骤之后移除
Toast

JSONmethod j = new JSONmethod();
j.execute("here is json string");
并将其放入onPostExecute:

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    Toast.makeText(this,result,Toast.LENGTH_LONG).show();
}

Android使用单个用户界面(UI)线程处理输入事件/任务,该线程称为主线程。主线程不能处理并发操作,因为它一次只能处理一个事件/操作。对于

JSONmethod-JSONmethod=new-JSONmethod();
execute(“您的json字符串”);
公共类JSONmethod扩展了AsyncTask
{
公共字符串结果_字符串;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
BufferedReader reader=null;
HttpURLConnection=null;
字符串缓冲区;
试一试{
网址;
url=新url(参数[0]);
connection=(HttpURLConnection)url.openConnection();
connection.connect();
InputStream=connection.getInputStream();
reader=新的BufferedReader(新的InputStreamReader(流));
字符串行=”;
buffer=新的StringBuffer();
而((line=reader.readLine())!=null)
{
buffer.append(行);
}
返回buffer.toString();
}
捕获(格式错误)
{
e、 printStackTrace();
}
捕获(IOE异常)
{
e、 printStackTrace();
}
最后
{
if(连接!=null){
连接断开();
}
试一试{
if(读卡器!=null){
reader.close();
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
Log.d(“JSONmethod”,“result=“+result”);
}
}

Android使用单个用户界面(UI)线程处理输入事件/任务,该线程称为主线程。主线程不能处理并发操作,因为它一次只能处理一个事件/操作。对于

JSONmethod-JSONmethod=new-JSONmethod();
execute(“您的json字符串”);
公共类JSONmethod扩展了AsyncTask
{
公共字符串结果_字符串;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
BufferedReader reader=null;
HttpURLConnection=null;
字符串缓冲区;
试一试{
网址;
url=新url(参数[0]);
connection=(HttpURLConnection)url.openConnection();
connection.connect();
InputStream=connection.getInputStream();
reader=新的BufferedReader(新的InputStreamReader(流));
字符串行=”;
buffer=新的StringBuffer();
而((line=reader.readLine())!=null)
{
buffer.append(行);
}
返回buffer.toString();
}
捕获(格式错误)
{
e、 printStackTrace();
}
捕获(IOE异常)
{
e、 printStackTrace();
}
最后
{
if(连接!=null){
连接断开();
}
试一试{
if(读卡器!=null){
reader.close();
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
Log.d(“JSONmethod”,“result=“+result”);
}
}
使用库。它非常易于使用,可以完美解决您的问题:

首先为您的事件创建一个简单类: 公共类MyEvent{ 私有字符串数据

public MyEvent(String data) {
    this.data = data;
}

public String getData() {
    return data;
}

public void setData(String data) {
    this.data = data;
}
然后在您的活动或任何地方,注册和注销EventBus,如文档中所述

现在发布相应的事件:

   @Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);

    EventBus.getDefault().post(new MyEvent(jsonArray.toString()));
}
剩下要做的就是随时随地收听该事件(在另一个活动、片段、服务中——这就是EventBus的伟大之处):

使用库。它非常易于使用,可以完美解决您的问题:

首先为您的事件创建一个简单类: 公共类MyEvent{ 私有字符串数据

public MyEvent(String data) {
    this.data = data;
}

public String getData() {
    return data;
}

public void setData(String data) {
    this.data = data;
}
然后在您的活动或任何地方,注册和注销EventBus,如文档中所述

现在发布相应的事件:

   @Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);

    EventBus.getDefault().post(new MyEvent(jsonArray.toString()));
}
剩下要做的就是随时随地收听该事件(在另一个活动、片段、服务中——这就是EventBus的伟大之处):


我希望该值在另一个类中不在同一个类中添加回调以获取结果我希望该值在另一个类中不在同一个类中添加回调以获取结果您是否尝试了我的解决方案?:)您是否尝试了我的解决方案?:)