我有一個MainActivity
類有一個方法調用:updateTabTitles()
;getBaseContext()的NullPointerException()
updateTabTitles()
做它聽起來像,更新我的標籤標題。
String tabName = tabNames[tabNumber];
String font = "helveticaneuebold.ttf"; // Fonts found in assets/fonts/ folder
SpannableString title = new SpannableString(tabName);
SpannableString subTitle;
// This line gives me trouble
title.setSpan(new TypefaceSpan(getBaseContext(), font), 0, title.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
我把從我ChecklistTab
類,它擴展了Fragment
類此功能。下面的方法是我ChecklistTab
類:
public int calculateRemaining(ArrayList<ChecklistItem> checklistItems, int tabNumber) {
int remaining = 0;
for (int i = 0; i < checklistItems.size(); i++) {
if (!checklistItems.get(i).getCheckBox().isChecked() && checklistItems.get(i).getCheckBox().isEnabled() && !checklistItems.get(i).getCheckBox().getText().equals("N/A")) {
remaining++;
}
}
// NULL POINTER HERE
((MainActivity) getActivity()).updateTabTitles(tabNumber, remaining);
return remaining;
}
最後,我發現了一個自定義的TypefaceSpan
類在線更改字體。這是從updateTabTitles()
public TypefaceSpan(Context context, String typefaceName) {
mTypeface = sTypefaceCache.get(typefaceName);
if (mTypeface == null) {
mTypeface = Typeface.createFromAsset(context.getApplicationContext()
.getAssets(), String.format("fonts/%s", typefaceName));
// Cache the loaded Typeface
sTypefaceCache.put(typefaceName, mTypeface);
}
}
叫我真的不知道很多有關環境的構造,但用這個代碼和我以前執行工作。但是,自重構以來,我似乎無法弄清楚現在有什麼問題。
堆棧跟蹤:
java.lang.NullPointerException
at com.brettrosen.atls.fragments.ChecklistTab.calculateRemaining(ChecklistTab.java:179)
at com.brettrosen.atls.onclicklisteners.CheckboxOnClickListener.onClick(CheckboxOnClickListener.java:46)
at android.view.View.performClick(View.java:4192)
at android.widget.CompoundButton.performClick(CompoundButton.java:100)
at android.view.View$PerformClick.run(View.java:17327)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5019)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
請發佈您的Java堆棧跟蹤。另外,你在哪裏調用'calculateRemaining()'? – CommonsWare
爲什麼不使用「this」作爲上下文而不是getBaseContext? –
@CommonsWare我發佈了我的堆棧跟蹤。 'calculateRemaining'是從許多不同的類中調用的。其中一些是自定義OnClickListener類 – Brejuro