2017-05-27 20 views
-1

我的Android應用程序有一個問題,它在啓動時崩潰,我對LogCat不太瞭解。任何人都可以向我建議解決問題的最佳方法。我不知道是什麼是錯的。Android應用程序在開啓時崩潰

這是一個循環播放音頻的MediaPlayer應用程序。

在我寫之前(setOnClickListerner)它沒有崩潰。

什麼可能導致問題?

MainActivity.java:

 package com.jobyreuben.dholakloops; 



    public class MainActivity extends AppCompatActivity { 


Button dholak01; 
Button dholak02; 
Button dholak03; 
Button dholak04; 
Button dholak05; 
Button dholak06; 
Button dholak07; 
Button dholak08; 
Button dholak09; 
Button dholak10; 
Button dholak11; 
Button dholak12; 
Button dholak13; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 


    dholak01 = (Button) findViewById(R.id.button_1); 
    final MediaPlayer dk1 = MediaPlayer.create(MainActivity.this, R.raw.dholak01); 
    dholak02 = (Button) findViewById(R.id.button_2); 
    final MediaPlayer dk2 = MediaPlayer.create(MainActivity.this, R.raw.dholak02); 
    dholak03 = (Button) findViewById(R.id.button_3); 
    final MediaPlayer dk3 = MediaPlayer.create(MainActivity.this, R.raw.dholak03); 
    dholak04 = (Button) findViewById(R.id.button_4); 
    final MediaPlayer dk4 = MediaPlayer.create(MainActivity.this, R.raw.dholak04); 
    dholak05 = (Button) findViewById(R.id.button_5); 
    final MediaPlayer dk5 = MediaPlayer.create(MainActivity.this, R.raw.dholak05); 
    dholak07 = (Button) findViewById(R.id.button_6); 
    final MediaPlayer dk6 = MediaPlayer.create(MainActivity.this, R.raw.dholak06); 
    dholak08 = (Button) findViewById(R.id.button_7); 
    final MediaPlayer dk7 = MediaPlayer.create(MainActivity.this, R.raw.dholak07); 
    dholak09 = (Button) findViewById(R.id.button_8); 
    final MediaPlayer dk8 = MediaPlayer.create(MainActivity.this, R.raw.dholak08); 
    dholak10 = (Button) findViewById(R.id.button_9); 
    final MediaPlayer dk9 = MediaPlayer.create(MainActivity.this, R.raw.dholak09); 
    dholak11 = (Button) findViewById(R.id.button_10); 
    final MediaPlayer dk10 = MediaPlayer.create(MainActivity.this, R.raw.dholak10); 
    dholak12 = (Button) findViewById(R.id.button_11); 
    final MediaPlayer dk11 = MediaPlayer.create(MainActivity.this, R.raw.dholak11); 
    dholak13 = (Button) findViewById(R.id.button_12); 
    final MediaPlayer dk12 = MediaPlayer.create(MainActivity.this, R.raw.dholak12); 



    dholak01.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (dk1.isPlaying()) { 
       dk1.pause(); 
       dholak01.setBackgroundResource(R.drawable.dholak); 

      } else { 
       dk1.start(); 
       dholak01.setBackgroundResource(R.drawable.dholakp); 
       dk1.setLooping(true); 

      } 

     } 
    }); 

    dholak02.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (dk2.isPlaying()) { 
       dk2.pause(); 
       dholak02.setBackgroundResource(R.drawable.dholak); 

      } else { 
       dk2.start(); 
       dholak02.setBackgroundResource(R.drawable.dholakp); 
       dk2.setLooping(true); 

      } 

     } 
    }); 
    dholak03.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (dk3.isPlaying()) { 
       dk3.pause(); 
       dholak03.setBackgroundResource(R.drawable.dholak); 

      } else { 
       dk3.start(); 
       dholak03.setBackgroundResource(R.drawable.dholakp); 
       dk3.setLooping(true); 

      } 

     } 
    }); 
    dholak04.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (dk4.isPlaying()) { 
       dk4.pause(); 
       dholak04.setBackgroundResource(R.drawable.dholak); 

      } else { 
       dk4.start(); 
       dholak04.setBackgroundResource(R.drawable.dholakp); 
       dk4.setLooping(true); 

      } 

     } 
    }); 
    dholak05.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (dk5.isPlaying()) { 
       dk5.pause(); 
       dholak05.setBackgroundResource(R.drawable.dholak); 

      } else { 
       dk5.start(); 
       dholak05.setBackgroundResource(R.drawable.dholakp); 
       dk5.setLooping(true); 

      } 

     } 
    }); 
    dholak06.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (dk6.isPlaying()) { 
       dk6.pause(); 
       dholak06.setBackgroundResource(R.drawable.dholak); 

      } else { 
       dk6.start(); 
       dholak06.setBackgroundResource(R.drawable.dholakp); 
       dk6.setLooping(true); 

      } 

     } 
    }); 
    dholak07.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (dk7.isPlaying()) { 
       dk7.pause(); 
       dholak07.setBackgroundResource(R.drawable.dholak); 

      } else { 
       dk7.start(); 
       dholak07.setBackgroundResource(R.drawable.dholakp); 
       dk7.setLooping(true); 

      } 

     } 
    }); 
    dholak08.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (dk8.isPlaying()) { 
       dk8.pause(); 
       dholak08.setBackgroundResource(R.drawable.dholak); 

      } else { 
       dk8.start(); 
       dholak08.setBackgroundResource(R.drawable.dholakp); 
       dk8.setLooping(true); 

      } 

     } 
    }); 
    dholak09.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (dk9.isPlaying()) { 
       dk9.pause(); 
       dholak09.setBackgroundResource(R.drawable.dholak); 

      } else { 
       dk9.start(); 
       dholak09.setBackgroundResource(R.drawable.dholakp); 
       dk9.setLooping(true); 

      } 

     } 
    }); 
    dholak10.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (dk10.isPlaying()) { 
       dk10.pause(); 
       dholak10.setBackgroundResource(R.drawable.dholak); 

      } else { 
       dk10.start(); 
       dholak10.setBackgroundResource(R.drawable.dholakp); 
       dk10.setLooping(true); 

      } 

     } 
    }); 
    dholak11.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (dk11.isPlaying()) { 
       dk11.pause(); 
       dholak11.setBackgroundResource(R.drawable.dholak); 

      } else { 
       dk11.start(); 
       dholak11.setBackgroundResource(R.drawable.dholakp); 
       dk11.setLooping(true); 

      } 

     } 
    }); 

    dholak12.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (dk12.isPlaying()) { 
       dk12.pause(); 
       dholak12.setBackgroundResource(R.drawable.dholak); 

      } else { 
       dk12.start(); 
       dholak12.setBackgroundResource(R.drawable.dholakp); 
       dk12.setLooping(true); 

      } 

     } 
    }); 


} 

@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) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.id_about) { 
     Intent intentabout = new Intent(MainActivity.this, About.class); 
     startActivity(intentabout); 
     return true; 
    } 
    if (id == R.id.id_contact) 

    { 
     Intent intentabout = new Intent(MainActivity.this, Contact.class); 
     startActivity(intentabout); 
     return true; 
    } 

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

}

@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) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.id_about) { 
     Intent intentabout = new Intent(MainActivity.this, About.class); 
     startActivity(intentabout); 
     return true; 
    } 
    if (id == R.id.id_contact) 

    { 
     Intent intentabout = new Intent(MainActivity.this, Contact.class); 
     startActivity(intentabout); 
     return true; 
    } 

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

這裏的logcat的日誌:

--------- beginning of crash 
                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
                      at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6119) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
                     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 
                      at com.jobyreuben.dholakloops.MainActivity.onCreate(MainActivity.java:149) 
                      at android.app.Activity.performCreate(Activity.java:6679) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)  
                      at android.app.ActivityThread.-wrap12(ActivityThread.java)  
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)  
                      at android.os.Handler.dispatchMessage(Handler.java:102)  
                      at android.os.Looper.loop(Looper.java:154)  
                      at android.app.ActivityThread.main(ActivityThread.java:6119)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  
+0

'MainActivity.java'中的第118行是什麼? – Lal

+1

你錯過了數字'4' –

+0

dholak 04設置點擊監聽器 –

回答

0

你已經錯過了dholak04。將dholak04按鈕引用到xml按鈕。 改變dholak05 = (Button) findViewById(R.id.button_4);

dholak04 = (Button) findViewById(R.id.button_4); 

,你也已經在初始化了幾個錯誤。例如init 5和6

+1

其實StackOverflow是社區審覈的Q/A網站。按照StackOverflow文檔中提到的規範提問。你是初學者,最初你會對調節感到不滿,但是你會慢慢理解爲什麼在堆棧溢出中保持質量和標準的問題和答案是必要的。 –

+0

謝謝...我會繼續嘗試 –