gpt4 book ai didi

java - Android - NullPointerEx。由 Android 库类中的 getPackageName() 引起

转载 作者:行者123 更新时间:2023-12-03 06:30:57 25 4
gpt4 key购买 nike

我正在开发一个项目,我必须从普通“应用程序”模块中的 MainActivity 在 Android 库中启动一个 Activity。

MainActivity 看起来像这样:

public class MainActivity extends ActionBarActivity implements BackendResponse {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

// Here I start an AsyncTask
public void tellJoke(View view) {
BackendConnector backendConnector = new BackendConnector();
backendConnector.execute();
}

// And here is the Callback
@Override
public void response(String joke) {
/*
Down here is the problematic line (PresenterActivity is imported)
*/
Intent jokeIntent = new Intent(this, PresenterActivity.class); // <--- line 18
if (joke == null) joke = getString(R.string.emergency_joke);

jokeIntent.putExtra(getString(R.string.intent_key), joke);

startActivity(jokeIntent);
}

在“app”模块的 build.gradle 文件中,设置了依赖项
android {
// compileSdkVersion etc
}
dependency {
compile project(':jokepresenter') // <---
}

在整个项目的 settings.gradle 文件中,该库包含在
include ':app', ':jokepresenter'

Logcat 说如下:
FATAL EXCEPTION: main 
Process: com.udacity.gradle.builditbigger, PID: 2723
java.lang.NullPointerException:
Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
// ...
at com.udacity.gradle.builditbigger.MainActivity.response(MainActivity.java:18)
at com.udacity.gradle.builditbigger.BackendConnector.onPostExecute(BackendConnector.java:53)
at com.udacity.gradle.builditbigger.BackendConnector.onPostExecute(BackendConnector.java:17)
// ...

最佳答案

好,我知道了。

问题是回调方法,或者更具体地说是在 AsyncTask 中。

@Override
protected void onPostExecute(String joke) {
response = new MainActivity(); // <--- ¯\_(ツ)_/¯
response.response(joke);
}

因为我创建了一个新的 MainActivity,所以有 没有上下文 以此为代表:
Intent jokeIntent = new Intent(this, PresenterActivity.class);

这会导致 中出现 NullPointerException上下文包装器 当他试图打电话时
return mBase.getPackageName(); 

移动基地被设置为 Activity 上下文,当然是

关于java - Android - NullPointerEx。由 Android 库类中的 getPackageName() 引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41902222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com