0

Androidアプリでエラーが発生しました:

package com.martijngijselaar.rooster;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebviewActivity extends MainActivity {

    private WebView myWebView;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);

        WebView myWebView = (WebView)findViewById(R.id.webview);

        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        myWebView.setWebViewClient(new WebViewClient());

        myWebView.requestFocus(View.FOCUS_DOWN);
        myWebView.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                    case MotionEvent.ACTION_UP:
                        if (!v.hasFocus()) {
                            v.requestFocus();
                        }
                        break;
                }
                return false;
            }
        });
    }   

    public void onResume() {
        super.onResume();
        if ( isOnline() == true )
            myWebView.loadUrl(webLink);
        else if ( isOnline() == false )
            showNoConnectionDialog();
    }
}

そして、これはlogcatです:

11-25 12:33:34.697: E/AndroidRuntime(494): 致命的な例外: メイン 11-25 12:33:34.697: E/AndroidRuntime(494): java.lang.RuntimeException: アクティビティを再開できません {com.martijngijselaar .rooster/com.martijngijselaar.rooster.WebviewActivity}: java.lang.NullPointerException 11-25 12:33:34.697: E/AndroidRuntime(494): android.app.ActivityThread.performResumeActivity(ActivityThread.java:3128) で 11- 25 12:33:34.697: E/AndroidRuntime(494): android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143) 11-25 12:33:34.697: E/AndroidRuntime(494): android.app. ActivityThread.handleLaunchActivity(ActivityThread.java:2684) 11-25 12:33:34.697: E/AndroidRuntime(494): android.app.ActivityThread.access$2300(ActivityThread.java:125) で 11-25 12:33:34.697 : E/AndroidRuntime(494): android.app.ActivityThread$H で。handleMessage(ActivityThread.java:2033) 11-25 12:33:34.697: E/AndroidRuntime(494): android.os.Handler.dispatchMessage(Handler.java:99) 11-25 12:33:34.697: E/ AndroidRuntime(494): android.os.Looper.loop(Looper.java:123) 11-25 12:33:34.697: E/AndroidRuntime(494): android.app.ActivityThread.main(ActivityThread.java:4627) ) 11-25 12:33:34.697: E/AndroidRuntime(494): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 11-25 12:33:34.697: E/AndroidRuntime(494): Java で。 lang.reflect.Method.invoke(Method.java:521) 11-25 12:33:34.697: E/AndroidRuntime(494): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) ) 11-25 12:33:34.697: E/AndroidRuntime(494): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 11-25 12:33:34.697: E/AndroidRuntime(494 ): ダルビックで。system.NativeStart.main(Native Method) 11-25 12:33:34.697: E/AndroidRuntime(494): 原因: java.lang.NullPointerException 11-25 12:33:34.697: E/AndroidRuntime(494): at com.martijngijselaar.rooster.WebviewActivity.onResume(WebviewActivity.java:46) 11-25 12:33:34.697: E/AndroidRuntime(494): android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149) で 11-25 12:33:34.697: E/AndroidRuntime(494): android.app.Activity.performResume(Activity.java:3823) 11-25 12:33:34.697: E/AndroidRuntime(494): android.app.ActivityThread で.performResumeActivity(ActivityThread.java:3118) 11-25 12:33:34.697: E/AndroidRuntime(494): ... 12 もっと見るmartijngijselaar.rooster.WebviewActivity.onResume(WebviewActivity.java:46) 11-25 12:33:34.697: E/AndroidRuntime(494): android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149) 11-25 12: 33:34.697: E/AndroidRuntime(494): android.app.Activity.performResume(Activity.java:3823) 11-25 12:33:34.697: E/AndroidRuntime(494): android.app.ActivityThread.performResumeActivity で(ActivityThread.java:3118) 11-25 12:33:34.697: E/AndroidRuntime(494): ... 12 もっと見るmartijngijselaar.rooster.WebviewActivity.onResume(WebviewActivity.java:46) 11-25 12:33:34.697: E/AndroidRuntime(494): android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149) 11-25 12: 33:34.697: E/AndroidRuntime(494): android.app.Activity.performResume(Activity.java:3823) 11-25 12:33:34.697: E/AndroidRuntime(494): android.app.ActivityThread.performResumeActivity で(ActivityThread.java:3118) 11-25 12:33:34.697: E/AndroidRuntime(494): ... 12 もっと見るat android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118) 11-25 12:33:34.697: E/AndroidRuntime(494): ... 12 もっと見るat android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118) 11-25 12:33:34.697: E/AndroidRuntime(494): ... 12 もっと見る

引用符

4

3 に答える 3

5

あなたは本当に近いです。URL をロードするコードを onResume に移動するだけです。

public void onResume(){
super.onResume();
 if ( isOnline() == true )
            myWebView.loadUrl(webLink);
}

onResume は onCreate の直後に呼び出されるため、最初のロードの場合と一時停止から戻った場合の両方で呼び出されます。

コメントの議論に基づいて更新: Web ビューをインスタンス変数に移動するには:

public class WebviewActivity extends MainActivity {

  private WebView myWebView;

  public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);

    myWebView = (WebView)findViewById(R.id.webview);
     //the rest of your onCreate method here)
    }
  }
于 2011-11-25T11:36:33.687 に答える
1

基本的には、 Activity Lifecycleフローを確認するだけです。

初期化をそのままにしonCreateて、WIFI を確認し、onResume でダイアログを起動します。

于 2011-11-25T11:31:03.400 に答える
1

onCreate ですべてのものを正しく作成しています。onResume は、画面をオンにしてデバイスが起動したときに実行されるため、次に行うべき論理的なことを考えてください: 更新が必要なグラフィックスを更新する、Bluetooth や Wi-Fi 通信がシャットダウンされている場合は再起動するなど。

これがどのように機能するかについては、Android Developers のアクティビティ ライフサイクルのスキーマを参照してください。

于 2011-11-25T11:34:33.303 に答える