2012-04-06 3 views
3

これは経験豊富なアンドロイドプログラマーにとっては本当に簡単です。残念ながら私はアンドロイドSDKについて何も知らない。私はPhoneGapを使ってWebアプリケーションをパッケージしています。私はcordovaExample.javaのWebSettingsをオーバーライドする必要があります(今は私のアプリケーションのテンプレートとしてcordovaExampleを使用しています)。私のコードは次のようになります。WebSettingsを無効にするcordovaExample.javaはPhoneGapでエラーにつながります

package org.apache.cordova.example; 

import android.app.Activity; 
import android.os.Bundle; 
import org.apache.cordova.*; 

public class cordovaExample extends DroidGap 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     this.appView.getSettings().setUseWideViewPort(true); 
     this.appView.getSettings().setLoadWithOverviewMode(true); 
     super.onCreate(savedInstanceState); 
     super.loadUrl("file:///android_asset/www/index.html"); 
    } 
} 

私は問題なくant debug installを実行することができますが、私はエミュレータでアプリを起動すると、以下のエラーが発生します。

E/AndroidRuntime( 549): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.apache.cordova.example/org.apache.cordova.example.cordovaExample}: java.lang.NullPointerException 
E/AndroidRuntime( 549): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
E/AndroidRuntime( 549): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
E/AndroidRuntime( 549): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
E/AndroidRuntime( 549): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
E/AndroidRuntime( 549): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime( 549): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime( 549): at android.app.ActivityThread.main(ActivityThread.java:4424) 
E/AndroidRuntime( 549): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime( 549): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime( 549): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime( 549): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime( 549): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime( 549): Caused by: java.lang.NullPointerException 
E/AndroidRuntime( 549): at org.apache.cordova.example.cordovaExample.onCreate(cordovaExample.java:12) 
E/AndroidRuntime( 549): at android.app.Activity.performCreate(Activity.java:4465) 
E/AndroidRuntime( 549): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
E/AndroidRuntime( 549): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
E/AndroidRuntime( 549): ... 11 more 
W/ActivityManager( 78): Force finishing activity org.apache.cordova.example/.cordovaExample 

Iパッケージた場合にエラーが関係なく起こりますandroid sdk 2.1または4.3(Mac OS X Lionの場合)

ご協力いただければ幸いです。

答えて

2

エラーがライン12でのNullPointerExceptionがあることを言う:戻っている

this.appView.getSettings().setUseWideViewPort(true); 

どちらのthis.appViewがappView.getSettingsのnullでは、()ヌル。ヌル値チェックを追加し、それがどれかを確認します。なぜそれがどれであるかを知ったら、そこにヌル値がある理由を見つけるのは簡単になります。

また、問題とは関係なく、タイプミスでもクラス名がラクダであるかどうかはわかりません。これを行うことがベストプラクティスに反する。キャメルケースの命名法はインスタンス変数、メンバ、メソッドだけで使用されるので、将来はあなたを混乱させるでしょう。クラス名は常に大文字の先頭文字で、パッケージ名は常に小文字です。 だから、

CordovaExample 

、あなたはブラウザがのピクセル幅デバイスの幅に関係なく、ビューポートを拡張したいときは、私のためのソリューションをしていない

cordovaExample 
+0

セルビンは私にそれを打つ。はい、super.onCreate()を最初に呼び出す必要があります。それは恐らくNPEを解決するでしょう。 – praneetloke

+2

ありがとう、それは大きな助けでした!実際には、私はsuper.loadUrl( "file:///android_asset/www/index.html")と呼ぶ必要がありました。最初。 –

+0

あなたは大歓迎です:) – praneetloke

1

appViewがnullで...呼んsuper.onCreate(savedInstanceState);最初

2

する必要がありますデバイス:

はsuper.loadURL(...)の後に以下の行を追加します。

super.appView.getSettings().setLoadWithOverviewMode(true); 
super.appView.getSettings().setUseWideViewPort(true); 

...スケーリングを可能にするメタビューポート属性と組み合わせて使用​​します。

関連する問題