2013-06-18 39 views
1

我看到這個錯誤突然出現幾乎一百萬次,人們得到了幫助。作爲初學者,我想尋求一些我正在開發的簡單媒體記錄器的幫助。請幫忙。致命例外:無法啓動活動ComponentInfo {...}:java.lang.NullPointerException

下文提到的是代碼 -

add_company.java

public class add_company extends Activity{ 

     //Adding for voice record 
     ImageButton play,record,stop; 
     private String s,voicerec; 
     MediaPlayer mp; 
     MediaRecorder mr; 

     @Override 
     public void onCreate(Bundle savedInstanceState){ 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.add_company); 

      //Adding voice record 
      play = (ImageButton)findViewById(R.id.Play); 
      record = (ImageButton)findViewById(R.id.Record); 
      stop = (ImageButton)findViewById(R.id.Stop); 

      File audioFile = null; 
      try { 
       audioFile = File.createTempFile(null, ".amr"); 
      } catch (IOException e1) { 
       e1.printStackTrace(); 
      } 
      mr = new MediaRecorder(); 

      s = audioFile.getAbsolutePath(); 
      voicerec=s; 
      System.out.println("Path: "+s); 

      mr.setAudioSource(MediaRecorder.AudioSource.MIC); 
      mr.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); 
      mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
      mr.setOutputFile(s); 
      try{ 
       mr.prepare(); 
      } 
      catch (Exception e) { 
       // TODO: handle exception 
       e.printStackTrace(); 
      } 

     } 

     public void record(View v){ 
      Toast.makeText(add_company.this, "Recording", Toast.LENGTH_LONG).show(); 
      mr.start(); 
     } 
     public void stop(View v){ 
      mr.stop(); //this is stop recording 

      Toast.makeText(add_company.this, "Stopped", Toast.LENGTH_LONG).show(); 
      mr.reset();  // this is required to avoid the error: Fatal signal 11 (SIGSEGV) at 0x00000010 (code=1) 
      mr.release(); 
     } 
     public void play(View v){ 
      File f = new File(voicerec); 
      Uri u = Uri.fromFile(f); 
      mp = MediaPlayer.create(add_company.this, u); 
      mp.setLooping(false); 
      mp.start(); 
     } 

    } 

logcat的細節:

06-18 10:31:53.281: E/AndroidRuntime(2740): FATAL EXCEPTION: main 
    06-18 10:31:53.281: E/AndroidRuntime(2740): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tg_db1/com.example.tg_db1.add_company}: java.lang.NullPointerException 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at android.os.Handler.dispatchMessage(Handler.java:99) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at android.os.Looper.loop(Looper.java:137) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at java.lang.reflect.Method.invokeNative(Native Method) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at java.lang.reflect.Method.invoke(Method.java:511) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at dalvik.system.NativeStart.main(Native Method) 
    06-18 10:31:53.281: E/AndroidRuntime(2740): Caused by: java.lang.NullPointerException 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at java.io.File.createTempFile(File.java:999) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at java.io.File.createTempFile(File.java:970) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at com.example.tg_db1.add_company.onCreate(add_company.java:64) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at android.app.Activity.performCreate(Activity.java:5104) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
    06-18 10:31:53.281: E/AndroidRuntime(2740):  ... 11 more 
+3

是什麼在add_company.java線64? – Raghunandan

+0

audioFile = File.createTempFile(null,「.amr」); – Lohit

+0

嘗試像這樣 File outputFile = File.createTempFile(「prefix」,「extension」,outputDir);請讓我知道做這個作品 –

回答

5

File.createTempFile(null, ".amr");

前綴不能爲空。

source code

public static File createTempFile(String prefix, String suffix, File directory) throws IOException 
    { 
     if (prefix == null) throw new NullPointerException(); 
     /***/ 
    } 
+0

非常感謝。我試圖看看是否可以檢查隨機名稱生成,因此設置爲空。 – Lohit

相關問題