Ошибка NullPointerException в android

Я работаю над приложением Media Recorder, использующим API android API 17. Тем не менее, я получаю Fatal exception:main и Null Pointer Exception во время выполнения: т.е. при нажатии кнопки записи, unfortunately stopped working ошибка. Что я делаю не так?

Вот мой файл mainfest:

<uses-sdk android:minsdkversion="16" android:targetsdkversion="18">
<uses-permission android:name="android.permission.RECORD_AUDIO">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">

<application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme">
 <activity android:name="co.example.projectplay.MainActivity" android:label="@string/app_name">
 <intent-filter>
 <action android:name="android.intent.action.MAIN">

 <category android:name="android.intent.category.LAUNCHER">
 </category></action></intent-filter>
 </activity>
</application>
</uses-permission></uses-permission></uses-sdk>

Это мой.java файл

protected void onCreate(Bundle savedInstanceState){

 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 FILE=Environment.getExternalStorageState()+"/tempRecord.3gpp";

 botn1=(Button)findViewById(R.id.botn1);
 botn1.setOnClickListener(new View.OnClickListener() 
 {

 @Override
 public void onClick(View v)
 {

 play= MediaPlayer.create(MainActivity.this,R.raw.a);
 play.start();
 play.setOnCompletionListener(new OnCompletionListener()
 {
 public void onCompletion(MediaPlayer play)
 {
 play.release();
 }
 }
 );
 }
 });


 botn2=(Button)findViewById(R.id.botn2);
 botn2.setOnClickListener(new View.OnClickListener() {

 @Override
 public void onClick(View v) {

 play= MediaPlayer.create(MainActivity.this,R.raw.b);
 play.start();
 play.setOnCompletionListener(new OnCompletionListener()
 {
 public void onCompletion(MediaPlayer play)
 {
 play.release();
 }
 });
 }
 });
 botn3=(Button)findViewById(R.id.botn3);
 botn3.setOnClickListener(new View.OnClickListener() {

 @Override
 public void onClick(View v) {

 play= MediaPlayer.create(MainActivity.this,R.raw.c);
 play.start();
 play.setOnCompletionListener(new OnCompletionListener()
 {
 public void onCompletion(MediaPlayer play)
 {
 play.release();
 }
 });
 }
 });

 botnRecord=(Button)findViewById(R.id.botnRecord);
 botnRecord.setOnClickListener(new View.OnClickListener() 
 {
 @Override
 public void onClick(View v) 
 {
 if (botnRecord.getText().toString().equals("Record"))
 {
 try 
 {
 startRecord();
 } 
 catch (Exception e) 

 {
 e.printStackTrace();
 }

 txtButton.setText("Recording...");
 botnRecord.setText("End");
 }
 else if(botnRecord.getText().toString().equals("End"))
 {
 stopRecord();
 txtButton.setText("");
 botnRecord.setText("Play");
 }
 else if(botnRecord.getText().toString().equals("Play"))
 {
 try {
 startPlayback();
 } 
 catch (Exception e) 
 {

 e.printStackTrace();

 }
 botnRecord.setText("Stop");
 }

 else
 {
 stopPlayback();
 botnRecord.setText("Record");
 }
 } 
 });
} 

public void startRecord()throws Exception
{
 if(record!=null)
 {
 //record.release();
 record.reset();
 }

 File fileOut=new File(FILE);

 if(fileOut!=null)
 {
 fileOut.delete();
 }
 record=new MediaRecorder();
 record.setAudioSource(MediaRecorder.AudioSource.MIC);
 record.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
 record.***************(MediaRecorder.************.AMR_NB);
 record.setOutputFile(FILE);
 record.prepare();
 record.start();

}
public void stopRecord()
{
 record.stop();
 record.release();
}
public void startPlayback()throws Exception
{
 if(play!=null)
 {
 play.stop();
 play.release();
 }
 play=new MediaPlayer();
 play.setDataSource(FILE);
 play.prepare();
 play.start();
 play.setOnCompletionListener(new OnCompletionListener()
 {
 public void onCompletion(MediaPlayer play)
 {
 play.release();
 }
 }
 );
}
public void stopPlayback()
{
 play.stop();
 play.release();
}

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

}

Это ошибка моего журнала

  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): FATAL EXCEPTION: main
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): java.lang.NullPointerException
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): at co.example.projectplay.MainActivity $ 4.onClick(MainActivity.java:106)
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): at android.view.View.performClick(View.java:4204)
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): at android.view.View $ PerformClick.run(View.java:17355)
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): на android.os.Handler.handleCallback(Handler.java:725)
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): at android.os.Handler.dispatchMessage(Handler.java:92)
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): at android.os.Looper.loop(Looper.java:137)
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): at android.app.ActivityThread.main(ActivityThread.java:5041)
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): at java.lang.reflect.Method.invokeNative (собственный метод)
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): at java.lang.reflect.Method.invoke(Method.java:511)
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): at com.androi03-11 05: 13: 04.803: E/AndroidRuntime (814): at dalvik.system.NativeStart.main (родной метод) d.internal.os.ZygoteInit.main(ZygoteInit.java:560)
  • 03-11 05: 13: 04.803: E/AndroidRuntime (814): at dalvik.system.NativeStart.main (собственный метод)
  • 03-11 05: 13: 08.062: I/Process (814): сигнал отправки.PID: 814 SIG: 9
1 ответ

Ваш код не показывает назначение txtButton. Вероятно, это должно выглядеть так:

txtButton=(TextView)findViewById(R.id.txtButton);

прежде чем использовать его в первый раз.

licensed under cc by-sa 3.0 with attribution.