【问题标题】:NPE on setting visibilityNPE 关于设置可见性
【发布时间】:2011-11-30 01:45:35
【问题描述】:

out 应用程序的一些用户抱怨空指针异常,这似乎只发生在他们身上(HTC Desire,最新的 Android,2.3?),但在其他设备上无法重现。我有点困惑,这可能是什么来源。

有什么想法吗?

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>

...

【问题讨论】:

  • 您能否也发布包含此 FrameLayout 的 XML 布局文件
  • WebView 是从哪里来的?我在 XML 中没有看到它。
  • webview 以编程方式作为子项添加到 FrameLayout 抽认卡中。
  • 添加了相应的代码

标签: android view visibility


【解决方案1】:

是线条吗:

mCardContainer = (FrameLayout) findViewById(R.id.flashcard_frame);
mCardContainer.setVisibility(View.VISIBLE); --> 2282

在致电setContentView(R.layout.your_proper_layout_resource); 之后?

【讨论】:

    猜你喜欢
    • 2012-01-30
    • 2012-04-20
    • 2011-09-02
    • 2015-11-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    相关资源
    最近更新 更多