2016-10-14 23 views
2

問題を解決するためにどこからでも検索しましたが、問題は解決しませんでした。問題は、という別のアクティビティをボタンを使用して起動したいのですが、 。私はlogcatを確認し、これを見つけた -別のアクティビティを起動するとアプリケーションがクラッシュする

java.lang.RuntimeException:活性ComponentInfo {com.example.india.chemistry/com.example.india.chemistry.FifthActivity}をインスタンス化できません:java.lang.NullPointerExceptionが:ヌルオブジェクトリファレンスで仮想メソッド 'android.content.Context android.content.Context.getApplicationContext()'を呼び出そうとしました

以下は私のmainActivity javaファイルです。

package com.example.india.chemistry; 

public class MainActivity extends AppCompatActivity { 
    private static boolean isRunning = false; 
    private Toolbar toolbar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     if(!isRunning) 
     { 
      isRunning = true; 
      startActivity(new Intent(this, Intro.class));//Play your video here 
     } 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
} 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    public void part_a(View View){ 
      Intent intent1 = new Intent("com.example.india.chemistry.Second_Activity"); 
      startActivity(intent1); 
    } 

    public void part_b(View View) { 
     Intent intent2 = new Intent("com.example.india.chemistry.ThirdActivity"); 
     startActivity(intent2); 
    } 

    public void formulas(View View) { 
     Intent intent4 = new Intent(this,FifthActivity.class); 
     startActivity(intent4); 
    }  
} 

以下は私のFifthActivity.javaファイルです。

package com.example.india.chemistry; 


public class FifthActivity extends ActionBarActivity { 
    final Animation shake = AnimationUtils.loadAnimation(getApplicationContext(), 
      R.anim.shake); 
    final Animation bounce = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.bounce); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_fifth); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_fifth, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId();  

     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 


     public void nernst(View View) { 
      Intent intentf1 = new Intent("com.example.india.chemistry.nernst_activity"); 
      startActivity(intentf1); 
     } 

     public void waterhardness(View View) { 
      Intent intentf2 = new Intent("com.example.india.chemistry.WaterHardness"); 
      startActivity(intentf2); 

     } 

     public void determinationOfCao(View view) { 
      Intent intentf3 = new Intent("com.example.india.chemistry.CementCao"); 
      startActivity(intentf3); 
     } 

     public void COD_waste_water(View view) { 
      Intent intentf4 = new Intent("com.example.india.chemistry.COD"); 
      startActivity(intentf4); 
     } 

     public void C_in_B(View view) { 
      Intent intentf5 = new Intent("com.example.india.chemistry.Copper_in_Brass"); 
      startActivity(intentf5); 
     } 

     public void alkalinity(View view) { 
      Intent intentf6 = new Intent("com.example.india.chemistry.Alkalinity"); 
      startActivity(intentf6); 
     } 

     public void haematite_ore(View view) { 
      Intent intentf7 = new Intent("com.example.india.chemistry.HaemetiteOre"); 
      startActivity(intentf7); 
     } 

     public void colourimetry_copper(View view) { 
      Intent intentf8 = new Intent("com.example.india.chemistry.Colourimetric_Copper"); 
      startActivity(intentf8); 
     } 

     public void potentiometry_fas(View view) { 
      Intent intentf9 = new Intent("com.example.india.chemistry.Potentiometry_fas"); 
      startActivity(intentf9); 
     } 

     public void conductometry(View view) { 
      Intent intentf10 = new Intent("com.example.india.chemistry.Conductometry"); 
      startActivity(intentf10); 
     } 

     public void pka(View view) { 
      Intent intentf11 = new Intent("com.example.india.chemistry.pka"); 
      startActivity(intentf11); 
     } 



} 

以下はlogcatです。

10-14 17:13:58.145 15430-15430/com.example.india.chemistry E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.india.chemistry, PID: 15430 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.india.chemistry/com.example.india.chemistry.FifthActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2420) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2569) 
at android.app.ActivityThread.access$900(ActivityThread.java:150) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1399) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:168) 
at android.app.ActivityThread.main(ActivityThread.java:5885) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference 
at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:107) 
at com.example.india.chemistry.FifthActivity.<init>(FifthActivity.java:21) 
at java.lang.Class.newInstance(Native Method) 
at android.app.Instrumentation.newActivity(Instrumentation.java:1085) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2410) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2569)  
at android.app.ActivityThread.access$900(ActivityThread.java:150)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1399)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:168)  
at android.app.ActivityThread.main(ActivityThread.java:5885)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)  

私を助けてください。

public class FifthActivity extends ActionBarActivity { 
    Animation shake,bounce; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_fifth); 
shake = AnimationUtils.loadAnimation(getApplicationContext(), 
      R.anim.shake); 
    bounce = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.bounce); 
    } 
+1

[NullPointerExceptionとは何ですか?それを修正するにはどうすればいいですか?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) – yennsarah

答えて

0

はこれを試してみてください。

+0

説明を追加 –

+0

ありがとうございます!出来た!私は問題が発生した理由とそれらのコードによってどのように修正されたのか理解できませんでしたが。 –

+0

@ChinmayaKNが助けてくれたら助かります – Vyacheslav

0

あなたのビューがまだ作成されていない、移動:

shake = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.shake); 
bounce = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.bounce); 

あなたのOnCreateメソッドに

1

活動はあなたので、まだ正常に作成されていないので、あなたがoncreate前に(ヌルにつながる)getApplicationContextを呼び出すことはできません

Animation shake,bounce; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_fifth); 

    shake = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.shake); 
    bounce = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.bounce); 

} 
+0

はい。アクティビティが作成された後でなければgetApplicationContext()を使用できないためです。アクティビティの前にアクティビティコンテキストを使用することはできません。作成する –

1

.....これを試してみて、問題が解決かないなら、私に知らせてoncreateが実行された後、またはsuperコールの後でこれを呼び出す必要があります。

スーパーコールonCreateは、アクティビティのアプリケーションコンテキストを取得します。

ソリューション:

だから、どちらかoncreate内にコードを置くか、または関数を作成し、super呼び出しの後oncreateの内側からそれを呼び出します。

注:あなたが作るためにfinalを避ける必要がありますあなたのidentifiersあなたの活動が作成または再作成されるときに、グローバルfinalと遅延初期化のみconstructorsで動作しますが、心配していないため、onCreateは一度実行されます。

0

スタックトレースの最初の行には、詳細情報が表示されます。nullオブジェクトのgetApplicationContext() 'オブジェクトreference.Meansアクティビティは作成されていません。返されるnullコンテキスト。両方のアニメーションのオブジェクトをグローバルに作成します。この方法でコードを編集してみてください。

public class FifthActivity extends ActionBarActivity { 

Animation shake,bounce; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_fifth); 

    shake = AnimationUtils.loadAnimation(getApplicationContext(), 
     R.anim.shake); 
    bounce = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.bounce); 
} 

}

+0

試しましたか? –

0

あなたがアプリケーションの下で、マニフェストファイル内のアクティビティを追加する必要があります。新しいアクティビティを作成するたびに、それをマニフェストファイルに追加します。

<application 
... 
<activity 
      android:name=". FifthActivity" 
      android:label="Fifth" /> 
... 
</application> 

これが役立ちます。

関連する問題