1
一些外出應用程序的用戶正在抱怨nullpointerexception,這似乎只發生在他們身上(HTC Desire,最新的Android 2.3?),但在其他設備上無法再現。我有點困惑,可能是什麼來源。NPE設置能見度
任何想法?
java.lang.NullPointerException
android.webkit.WebView.navHandledKey(WebView.java:9290)
android.webkit.WebView.requestFocus(WebView.java:7847)
android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:1131)
android.view.ViewGroup.requestFocus(ViewGroup.java:1087)
android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:1131)
android.view.ViewGroup.requestFocus(ViewGroup.java:1087)
android.view.View.requestFocus(View.java:3718)
android.view.View.requestFocus(View.java:3696)
android.view.ViewRoot.focusableViewAvailable(ViewRoot.java:1785)
android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:470)
android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:470)
android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:470)
android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:470)
android.view.View.setFlags(View.java:4680)
android.view.View.setVisibility(View.java:3163)
at com.ichi2.anki.Reviewer.fillFlashcard(Reviewer.java:2282)
的代碼看起來像這樣:
private FrameLayout mCardContainer;
...
mCardContainer = (FrameLayout) findViewById(R.id.flashcard_frame);
...
mCardFrame = (FrameLayout) findViewById(R.id.flashcard);
mCardFrame.removeAllViews();
mCard = createWebView();
mCardFrame.addView(mCard);
...
mCardContainer.setVisibility(View.VISIBLE); --> 2282
...
...
private WebView createWebView() {
WebView webView = new MyWebView(this);
webView.setWillNotCacheDrawing(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
if (mZoomEnabled) {
webView.getSettings().setBuiltInZoomControls(true);
}
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new AnkiDroidWebChromeClient());
webView.addJavascriptInterface(new JavaScriptInterface(), "interface");
if (Integer.parseInt(android.os.Build.VERSION.SDK) > 7) {
webView.setFocusableInTouchMode(false);
}
mScaleInPercent = webView.getScale();
return webView;
}
...
class MyWebView extends WebView {
public MyWebView(Context context) {
super(context);
}
@Override
public boolean onCheckIsTextEditor() {
return true;
}
}
的根據XML文件看起來像這樣:
...
<FrameLayout android:id="@+id/flashcard_frame"
android:layout_margin="3dip"
android:layout_below="@+id/top_bar"
android:layout_above="@+id/answer_nextTime_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<FrameLayout android:id="@+id/flashcard"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<FrameLayout android:id="@+id/touch_layer"
android:layout_marginTop="20dip"
android:longClickable="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
<FrameLayout android:id="@+id/whiteboard"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<ImageView android:id="@+id/lookup_button"
android:padding="5dip"
android:layout_gravity="right"
android:src="@drawable/ic_lookup"
android:visibility="gone"
android:clickable="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<FrameLayout android:id="@+id/flashcard_border"
android:visibility="gone"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</FrameLayout>
...
你也可以發佈你的XML佈局文件,其中包含此FrameLayout – hooked82
是的,詛咒,我加了它 – nob
WebView從哪裏來?我沒有在XML中看到它。 – kichik