0

私はAndroidStudio 1.5でプロジェクトをコーディングしました。しばらくして、同じプロジェクトをバージョン2.1.2でコーディングしました(主に古いプロジェクトのJavaメソッドをコピーしてコピーしました)。私はこれらのエラーを取り除くために何をすべきですか? 以下は例外です。Androidruntime:FATAL EXCEPTIONの

FATAL EXCEPTION: main 
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.imtiaz.recognizer/com.example.imtiaz.recognizer.MainActivity}:java.lang.NullPointerException 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2232) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362) 
    at android.app.ActivityThread.access$700(ActivityThread.java:168) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1329) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:177) 
    at android.app.ActivityThread.main(ActivityThread.java:5493) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
    at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:116) 
    at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:147) 
    at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:27) 
    at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:50) 
    at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:201) 
    at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:181) 
    at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:521) 
    at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:190) 
    at java.lang.Class.newInstanceImpl(Native Method) 
    at java.lang.Class.newInstance(Class.java:1130) 
    at android.app.Instrumentation.newActivity(Instrumentation.java:1078) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2223) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362) 
    at android.app.ActivityThread.access$700(ActivityThread.java:168) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1329) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:177) 
    at android.app.ActivityThread.main(ActivityThread.java:5493) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041) 
    at dalvik.system.NativeStart.main(Native Method) 
+1

at com.example.imtiaz.recognizer.MainActivity。 (MainActivity.java:26) '' MainActivity.java'の26行目は何ですか?また、コンストラクタの残りの部分を投稿してください。 –

+1

OnCreate()の前にフィールドまたはフィールドのfindViewById()を呼び出すことができます。 OnCreate()でそれらを使用します。 – ABi

+0

ええ、私は偶然、アクティビティのサブクラスで1つのフィールドしか初期化していません。プロジェクトを再構築すると、私は質問を更新します。 – ABi

答えて

2
... 
at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:190) 
at com.example.imtiaz.recognizer.MainActivity.<init>(MainActivity.java:26) 
... 

あなたのActivityサブクラスのコンストラクタでfindViewById()を呼び出すことが表示されます。あなたはこれをすることはできません。かわりに、onCreate()メソッドですべての初期化を行う必要があります。私はあなたがactivity lifecycleについて学ぶことを強く勧めます。 Androidアプリを作成するには、これを正しく使用する必要があります。

+0

私のアクティビティのサブクラスでfindViewById()を呼び出さなかった。 – ABi

+1

@ABi投稿したスタックトレースには、それ以外のことが言います。 'MainActivity'のコンストラクタのコードで質問を編集して、26行目がどこにあるのかを示してください。 –

+0

私の考え方はい1つのフィールドにfindViewById()を使用しました。 – ABi