当前位置: 首页 > 知识库问答 >
问题:

使用Loopj实现向主线程返回Http响应并启动新活动(意图

苏宏峻
2023-03-14

我对Java编程还是个新手。我正在使用实现Loopj(com.Loopj.android:android-async-http:1.4.9)对异步进行Http请求。

AsyncHttpResponseHandler的OnSuccess和OnFailure正常工作。

New我想返回主线程HttpRespone,并在一个新的活动(意图)上显示它。

我找到了“公共 void ;onPostProcessResponse”方法,但其描述如下:“请注意:后处理不在主线程上运行,因此必须执行的任何UI活动都应该正确地调度到应用程序的UI线程。”(https://loopj.com/android-async-http/doc/com/loopj/android/http/asynchtpresponsehandler.html)

我真的很感谢任何帮助!!

代码如下:

在此处输入代码package com.example.myapplication;

在此处输入代码导入androidx.appcompat.app.appcompattivity;

在此处输入代码导入Android.content.intent;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.ResponseHandlerInterface;

import cz.msebera.android.httpclient.Header;
import cz.msebera.android.httpclient.HttpResponse;

    public class HttpRequest extends AppCompatActivity {

    private TextView eMail;
    private Button CallWebService;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_http_request);

        eMail = (TextView) findViewById(R.id.textView);
        CallWebService = (Button) findViewById(R.id.call_webservice);


        Intent get_Email = getIntent(); //
        String eMail_address = getIntent().getStringExtra("id_Email");
        eMail.setText(eMail_address);


        CallWebService.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            String url = "https://jsonplaceholder.typicode.com/posts/1"; //genutzte Bib:  implementation 'com.loopj.android:android-async-http:1.4.9'

            new AsyncHttpClient().get(url, new AsyncHttpResponseHandler() {
                @Override
                public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                    String urlResponse = new String(responseBody);
                    CallWebService.setText(urlResponse); 

                    //String currentString = urlResponse;
                    //String [] separated =  currentString.split(",");
                    //CallWebService.setText(separated[1]);


                }

                @Override
                public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                    CallWebService.setText("Error"); //response Body: Enthält die Antwort der URL Abfrage in Byte -> Umwandlung in string nötig
                }
            });

            }
        });

    }


}

万事如意,西蒙

共有1个答案

郑富
2023-03-14

在onSuccess()中使用此选项;

runOnUiThread(new Runnable(){
String urlResponse = new String(responseBody);
                CallWebService.setText(urlResponse);
}
);

必须在UI线程中使视图无效。

 类似资料:
  • 我是Android的新手,所以我正在制作一个涂色书应用程序,只是为了让自己熟悉Android编程。我已经广泛地查找了我的问题并实施了解决方案,但仍然没有进展。 我有一个活动“着色活动”,它调用了一个扩展表面视图的类“绘画视图”。我试图在一个单独的线程中更新画布。我在布局中也有一个按钮,将用户带到另一个活动中选择颜色。问题是,当用户选择颜色后返回时,画布变成空的,我不能再在画布上画画了。我想我不知何

  • 我有MainActivity上有一个片段,当用户点击片段时,用户会导航到另一个片段,在最后一个片段上有一个按钮来启动谷歌地图导航,这是代码: 问题是,在地图启动后,我希望用户在按下back时返回到我的应用程序,而不是Launcher。 有没有办法做到这一点。 这是我的完整代码: 主体活动 原木

  • 上面的代码行是在我的Android库项目中,因为我不知道在这个地方我的主要活动的类。 当在测试设备上通过USB接口部署应用程序时,这就像是一种魅力,但当在4.3设备上安装谷歌Play的应用程序时,就会出现这种错误。 <罢工> 07-03 13:54:19.843:E/DatabaseUtils(2344):向包写入异常07-03 13:54:19.843:E/DatabaseUtils(2344)

  • 问题内容: 我正在寻找一种方法来返回我在loopJ AsyncHttpClient onFinish或onSuccess或onFailure中得到的响应。截至目前,我有这段代码: 当我调用代码时: 在onSuccess或onFailure方法完成http发布之前,我得到了 JSONException 。 我注意到,在第一次调用时:Log.e(“ Exception”,“ JSONException

  • 我正在寻找一种方法来返回我在loopJ、AsyncHttpClient、onFinish或onSuccess或onfailure中得到的响应。到现在为止,我有这段代码: 我注意到,在第一次调用时:log.e(“exception”,“jsonexception”+e.toString());正在进行日志记录,然后是log.d(“onSuccess:”,jsonString);当它们处于同步状态时记

  • 我正在制作一个应用程序,其中有一个“MainActivity.class”,它有一个按钮“Edit profile”,可以引导另一个活动,称为“Editprofile.class”。它(MainActivity)还有一个文本视图,显示一个字符串(名称)。 Editprofile.class接受来自用户的字符串,按下添加按钮后,新的字符串会更新到数据库中,替换以前的字符串。现在,当更新后,用户通过后