首页 > 解决方案 > NullPointerException getApplicationThread()

问题描述

我试图从我的 HttpClient 类中打开一个新的意图,但我得到一个 getApplicationThread() 错误。我不确定是什么意思以及如何解决这个问题。

public class MainActivity extends AppCompatActivity {

    public static Context appContext;
    private HttpClient HttpClient = new HttpClient();

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

        appContext = getApplicationContext();

        HttpClient.buildClient();
    }

    public static Context getAppContext() {
        return appContext;
    }

公共类 HttpClient 扩展 AppCompatActivity {

Call<Post> call = jsonApi.getPosts(GlobalConstants.template, GlobalConstants.Device_id, "NL", 4, 1);
        call.enqueue(new Callback<Post>() {
            @Override
            public void onResponse(Call<Post> call, Response<Post> response) {
                if (response.isSuccessful() == false){
                    //todo
                    return;
                }

                Intent i = new Intent(MainActivity.getAppContext(), QuestionActivity.class);
                startActivity(i);
                finish();
            }

标签: android

解决方案


问题是这两个部分:

HttpClient extends AppCompatActivity

private HttpClient HttpClient = new HttpClient()

你永远不应该自己实例化一个活动类。这对任何你想要的活动都没有好处。例如,为消息处理设置活动线程。

首先,HttpClient 不应该是一个活动。

然后,当您的网络请求完成时执行操作的一种方法是在@Sana 的答案中进行回调。


推荐阅读