java - 在 WebView 上加载 URL 之前无法加载图像

标签 java android webview nullpointerexception imageview

当我启动应用程序时,我试图在 WebView 加载 URL 之前加载 .png 图像。这是我的 Java 代码:

package course.org.mywebsite;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.ImageView;

public class MainActivity extends Activity {


    WebView mWebView;
    ImageView logo;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        final Activity mActivity = this;
        this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
        super.onCreate(savedInstanceState);

        logo = (ImageView) findViewById(R.id.logo);
        setContentView(R.layout.activity_main);

        getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);

        mWebView = (WebView) findViewById( R.id.webview );
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.loadUrl(MyURLHere);

        mWebView.setWebChromeClient(new WebChromeClient() {

            public void onProgressChanged(WebView view, int progress) {
                //Make the bar disappear after URL is loaded, and changes string to Loading...
                mActivity.setTitle("Loading...");
                mActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded

                logo.setVisibility(View.VISIBLE);


                if(progress == 100) {
                    mActivity.setTitle(R.string.app_name);
                    logo.setVisibility(View.GONE);

                }
                }


        });


    }
}

我的布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
<ImageView
    android:id="@+id/logo"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:visibility="invisible"
    android:src="@drawable/logo"/>

    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />
</LinearLayout>

当我运行该应用程序时,它崩溃并出现以下错误:

 FATAL EXCEPTION: main                                                           
   Process: course.org.mywebsite, PID: 22730

   java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setVisibility(int)' on a null object reference                                                                           
   at course.org.sensoredlife.MainActivity$1.onProgressChanged(MainActivity.java:52)                                                                     
   at com.android.webview.chromium.WebViewContentsClientAdapter.onProgressChanged(WebViewContentsClientAdapter.java:239)
   at org.chromium.android_webview.AwContentsClientCallbackHelper$MyHandler.handleMessage(AwContentsClientCallbackHelper.java:169)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:148)
   at android.app.ActivityThread.main(ActivityThread.java:5417)
   at java.lang.reflect.Method.invoke(Native Method)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

引用这行特定的代码:

logo.setVisibility(View.VISIBLE);

我在这里缺少什么?我已经将图像分配给“logo”变量,并在 URL 加载过程中对其进行设置。

最佳答案

您只需将 Logo 分配移至 setContentView(R.layout.activity_main); 在此方法调用之后, View 才存在于内存中。


    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    logo = (ImageView) findViewById(R.id.logo);

关于java - 在 WebView 上加载 URL 之前无法加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40900563/

相关文章:

java - fragment Activity 不膨胀

Android WebView - 模态不断滚动到顶部

javascript - 使用 javascript 的 Windows 8 Metro 应用程序中的 Webview

java - 如何检索最大 id 值并存储在 int 变量中?

java - 如何读取带有空格的文本文件 android java

android - 填充标题文本框后,ListView 页脚元素不可单击

Android - 将 JSON 转换为 UTF-8

android - touch html 5 canvas 麻烦

java - Android Studio 没有与我的 PHP 脚本通信

java - 在 ColdFusion (Java) 中注册新的 mime 类型