2012-05-24 2 views
0
@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()){ 
    case R.id.upArrow: 
     upSound.start(); 

     En_description.setText("\"Straight Ahead\""); 
     break; 

    case R.id.downArrow: 
     downSound.start(); 

     En_description.setText("\"Down\""); 
     break; 

    case R.id.rightArrow: 
     rightSound.start(); 

     En_description.setText("\"Right\""); 
     break; 

    case R.id.leftArrow: 
     leftSound.start(); 

     En_description.setText("\"Left\""); 
     break; 
    default: 

    } 
} 

код просто когда я надавить на типы стрелки него направление его и играет звук по какой-то причине он работает где-то и другое время я получаю силу Закрыть помощь Спасибо это журналПринудительное закрытие из-за возможности переключения корпуса?

05-24 17:52:20.384: W/dalvikvm(343): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 
05-24 17:52:20.394: E/AndroidRuntime(343): Uncaught handler: thread main exiting due to uncaught exception 
05-24 17:52:20.404: E/AndroidRuntime(343): java.lang.NullPointerException 
05-24 17:52:20.404: E/AndroidRuntime(343): at com.aboutera.learnArabic.Directions.onClick(Directions.java:77) 
05-24 17:52:20.404: E/AndroidRuntime(343): at android.view.View.performClick(View.java:2364) 
05-24 17:52:20.404: E/AndroidRuntime(343): at android.view.View.onTouchEvent(View.java:4179) 
05-24 17:52:20.404: E/AndroidRuntime(343): at android.view.View.dispatchTouchEvent(View.java:3709) 
05-24 17:52:20.404: E/AndroidRuntime(343): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
05-24 17:52:20.404: E/AndroidRuntime(343): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
05-24 17:52:20.404: E/AndroidRuntime(343): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
05-24 17:52:20.404: E/AndroidRuntime(343): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
05-24 17:52:20.404: E/AndroidRuntime(343): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659) 
05-24 17:52:20.404: E/AndroidRuntime(343): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107) 
05-24 17:52:20.404: E/AndroidRuntime(343): at android.app.Activity.dispatchTouchEvent(Activity.java:2061) 
05-24 17:52:20.404: E/AndroidRuntime(343): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643) 
05-24 17:52:20.404: E/AndroidRuntime(343): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691) 
05-24 17:52:20.404: E/AndroidRuntime(343): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-24 17:52:20.404: E/AndroidRuntime(343): at android.os.Looper.loop(Looper.java:123) 
05-24 17:52:20.404: E/AndroidRuntime(343): at android.app.ActivityThread.main(ActivityThread.java:4363) 
05-24 17:52:20.404: E/AndroidRuntime(343): at java.lang.reflect.Method.invokeNative(Native Method) 
05-24 17:52:20.404: E/AndroidRuntime(343): at java.lang.reflect.Method.invoke(Method.java:521) 
05-24 17:52:20.404: E/AndroidRuntime(343): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
05-24 17:52:20.404: E/AndroidRuntime(343): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
05-24 17:52:20.404: E/AndroidRuntime(343): at dalvik.system.NativeStart.main(Native Method) 
05-24 17:52:20.414: I/dalvikvm(343): threadid=7: reacting to signal 3 
05-24 17:52:20.414: E/dalvikvm(343): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 
05-24 17:52:22.534: I/Process(343): Sending signal. PID: 343 SIG: 9 
+1

Вашего LogCat может помочь получить исключение, которое вызывает принудительное закрытие – Abhi

+0

выхода из-за неперехваченное исключением 05-24 17: 52: 20.404: E/AndroidRuntime (343): java.lang.NullPointerException 05-24 17: 52: 20.404: E/AndroidRuntime (343) См. ответ Bradford2000 – matt5784

+1

Какой бы код у вас ни был в строке 77, это вызывает проблему. Я подозреваю, что есть объект, к которому вы обращаетесь туда, который является нулевым. –

ответ

1

Проверьте, чтобы убедиться, что upSound, downSound, leftSound, RightSound инициализированы (не нуль), прежде чем использовать их

if (upSound != null) 
    upSound.start(); 

сделать для downSound, leftSound, RightSound также

Вы можете инициализировать звуки «на лету», чтобы убедиться, что звук пуст, он все равно играет.

if (upSound == null) 
    upSound = MediaPlayer.create(Directions.this, R.raw.up_sound); 
    upSound.start(); 

Кроме того, ваш текстView En_description также может быть нулевым, что также может привести к этому сбою. Убедитесь, куда вы извлекаете En_description (с помощью findViewById) он успешно завершает

1

Не уверен, что это ваша проблема, но вы можете попробовать выполнить нулевую проверку v перед выполнением v.getId().

if (v != null) 
{ 
    // Do switch statement 
} 
+0

, если только он вручную не называет onClick «v» никогда не будет null. вероятно, один из объектов upSound, downSound, являющихся нулевыми или En_description, равен нулю – dymmeh

+0

upSound = MediaPlayer.create (Directions.this, R.raw.up_sound); \t \t downSound = MediaPlayer.create (Directions.this, R.raw.down_sound); –

+0

Дело в том, что оно работает, а иногда и воспроизводит все звуки нормально, но кажется, что если бы я нажал на стрелки в каком-то шаблоне, приложение заставит закрыть –