-1
我正在開發一個項目,我必須從MainActivity中的普通'app'模塊中的Android庫中啓動一個Activity。Android - NullPointerEx。由Android庫的getPackageName()引起的類
在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);
}
從 '應用程序' 的的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)
// ...
的你能也許** **告訴你爲什麼downvote的問題嗎?也許我們可以解決這個問題? –
嘗試MainActivity.this或getContext()而不是僅在意圖 –
MainActivity.this給出相同的錯誤。我不能調用_getContext()_,只能調用_getBaseContext()_和_getApplicationContext()_(並且也有相同的錯誤) –