2
以下代碼運行正常,但是當我點擊後面時,應用程序崩潰並強行關閉它。 (這個代碼是用於從SD卡播放文件,如果不是下載顯示提醒)app force closed沒有令人信服的原因
什麼?
我該怎麼辦?
請幫我
import java.io.File;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class AudioPlayer extends Activity implements OnClickListener {
Button playButton;
MediaPlayer player;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
player = MediaPlayer.create(this,Uri.fromFile(audioFile));
playButton = (Button) this.findViewById(R.id.ButtonPlayStop);
playButton.setOnClickListener(this);
}Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
File sdcard = Environment.getExternalStorageDirectory();
File audioFile = new File(sdcard.getPath() + "/bluetooth/یه سوال دارم مگه1.mp3");
public void onClick(View v) {
if(audioFile.exists())
{
if(player!=null)
{
if(player.isPlaying())
{
player.pause();
}
else
{
player.start();
}
}
}
else
{
Builder alert = new AlertDialog.Builder(AudioPlayer.this);
alert.setTitle("Alert");
alert.setMessage("فایل دانلود نشده است");
alert.setPositiveButton("OK", null);
alert.show();
}
}
@Override
public void onBackPressed() {
if(player.isPlaying()) {
player.stop();
}
super.onBackPressed();
}
}
和我的logcat:
02-05 21:49:28.319: E/AndroidRuntime(5063): FATAL EXCEPTION: main
02-05 21:49:28.319: E/AndroidRuntime(5063): java.lang.NullPointerException
02-05 21:49:28.319: E/AndroidRuntime(5063): at com.example.downloadplay.AudioPlayer.onBackPressed(AudioPlayer.java:64)
02-05 21:49:28.319: E/AndroidRuntime(5063): at android.app.Activity.onKeyUp(Activity.java:1898)
02-05 21:49:28.319: E/AndroidRuntime(5063): at android.view.KeyEvent.dispatch(KeyEvent.java:1290)
02-05 21:49:28.319: E/AndroidRuntime(5063): at android.app.Activity.dispatchKeyEvent(Activity.java:2078)
02-05 21:49:28.319: E/AndroidRuntime(5063): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1722)
02-05 21:49:28.319: E/AndroidRuntime(5063): at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2627)
02-05 21:49:28.319: E/AndroidRuntime(5063): at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2602)
02-05 21:49:28.319: E/AndroidRuntime(5063): at android.view.ViewRoot.handleMessage(ViewRoot.java:1874)
02-05 21:49:28.319: E/AndroidRuntime(5063): at android.os.Handler.dispatchMessage(Handler.java:99)
02-05 21:49:28.319: E/AndroidRuntime(5063): at android.os.Looper.loop(Looper.java:130)
02-05 21:49:28.319: E/AndroidRuntime(5063): at android.app.ActivityThread.main(ActivityThread.java:3687)
02-05 21:49:28.319: E/AndroidRuntime(5063): at java.lang.reflect.Method.invokeNative(Native Method)
02-05 21:49:28.319: E/AndroidRuntime(5063): at java.lang.reflect.Method.invoke(Method.java:507)
02-05 21:49:28.319: E/AndroidRuntime(5063): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
02-05 21:49:28.319: E/AndroidRuntime(5063): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
02-05 21:49:28.319: E/AndroidRuntime(5063): at dalvik.system.NativeStart.main(Native Method)
異常的堆棧跟蹤將是有益的在這裏。 –
肯定會發布logcat,但你可能想檢查'player'是不是'null'也'如果(player!= null && player.isPlaying())' – codeMagic
我認爲'player'對象是'null'。請發佈logcat輸出。 –