MY app crashes when i go to a screen. i think it might be to do with there being multiple drag listeners which I thought were implemented properl.
here is me class
public class Quiz extends Activity
{
MediaPlayer mysound;
boolean loaded=false;
private SoundPool soundPool,soundPool2;
int soundID, soundID2;
String Ans;
TextView one,two,t1,ans3,ans4,ans5,ans6,ans7,ans8;
TextView Q1,Q2,Q3,Q4,Q5;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.quiz);
one = (TextView) findViewById(R.id.two4);
two = (TextView) findViewById(R.id.one6);
ans3 = (TextView) findViewById(R.id.three2);
ans4 = (TextView) findViewById(R.id.four0);
ans5 = (TextView) findViewById(R.id.four8);
ans6 = (TextView) findViewById(R.id.six4);
ans7 = (TextView) findViewById(R.id.seven2);
ans3 = (TextView) findViewById(R.id.eight);
Q1 =(TextView) findViewById(R.id.Q1);
Q2 =(TextView) findViewById(R.id.Q2);
Q3 =(TextView) findViewById(R.id.Q3);
Q4 =(TextView) findViewById(R.id.Q4);
Q5 =(TextView) findViewById(R.id.Q5);
Q1.setOnDragListener(dragListener);
Q2.setOnDragListener(dragListener2);
Q3.setOnDragListener(dragListener3);
Q4.setOnDragListener(dragListener4);
Q5.setOnDragListener(dragListener5);
one.setOnLongClickListener(longlisten);
two.setOnLongClickListener(longlisten);
ans3.setOnLongClickListener(longlisten);
ans4.setOnLongClickListener(longlisten);
ans5.setOnLongClickListener(longlisten);
ans6.setOnLongClickListener(longlisten);
ans7.setOnLongClickListener(longlisten);
ans8.setOnLongClickListener(longlisten);
soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId,
int status) {
loaded = true;
}
});
soundID = soundPool.load(this, R.raw.correct, 1);
soundPool2 = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
soundPool2.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId,
int status) {
loaded = true;
}
});
soundID2 = soundPool2.load(this, R.raw.error, 1);
}
OnLongClickListener longlisten = new OnLongClickListener()
{
@Override
public boolean onLongClick(View v)
{
TextView button = (TextView) v;
DragShadow dragShadow = new DragShadow(v);
ClipData data = ClipData.newPlainText("", "");
v.startDrag(data, dragShadow, button, 0);
return false;
}
};
private class DragShadow extends View.DragShadowBuilder
{
private ColorDrawable grey;
public DragShadow(View view) {
super(view);
grey = new ColorDrawable(Color.LTGRAY);
}
@Override
public void onDrawShadow(Canvas canvas) {
grey.draw(canvas);
}
@Override
public void onProvideShadowMetrics(Point shadowSize,Point shadowTouchPoint)
{
View v = getView();
int height =(int) v.getHeight();
int width = (int) v.getWidth();
grey.setBounds(0,0, width, height);
shadowSize.set(width, height);
shadowTouchPoint.set((int)width/2, (int)height/2);
}
};
OnDragListener dragListener = new OnDragListener()
{
@Override
public boolean onDrag(View v, DragEvent event)
{
int dragEvent = event.getAction();
TextView dropText = (TextView) v;
switch(dragEvent)
{
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
TextView draggedText = (TextView)event.getLocalState();
Ans = (String) (draggedText.getText());
dropText.setText(draggedText.getText());
if ( Ans.equals("16"))
{
if (loaded)
{
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float actualVolume = (float) audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume / maxVolume;
soundPool.play(soundID, volume, volume, 1, 0, 1f);
Log.e("Test", "Played sound");
}
}
else
{
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float actualVolume = (float) audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume / maxVolume;
soundPool2.play(soundID2, volume, volume, 1, 0, 1f);
Log.e("Test", "Played sound");
}
break;
}
return true;
}
};
OnDragListener dragListener2 = new OnDragListener()
{
@Override
public boolean onDrag(View v, DragEvent event)
{
int dragEvent = event.getAction();
TextView dropText = (TextView) v;
switch(dragEvent)
{
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
TextView draggedText = (TextView)event.getLocalState();
Ans = (String) (draggedText.getText());
dropText.setText(draggedText.getText());
if ( Ans.equals("24"))
{
if (loaded)
{
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float actualVolume = (float) audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume / maxVolume;
soundPool.play(soundID, volume, volume, 1, 0, 1f);
Log.e("Test", "Played sound");
}
}
else
{
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float actualVolume = (float) audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume / maxVolume;
soundPool2.play(soundID2, volume, volume, 1, 0, 1f);
Log.e("Test", "Played sound");
}
break;
}
return true;
}
};
OnDragListener dragListener3 = new OnDragListener()
{
@Override
public boolean onDrag(View v, DragEvent event)
{
int dragEvent = event.getAction();
TextView dropText = (TextView) v;
switch(dragEvent)
{
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
TextView draggedText = (TextView)event.getLocalState();
Ans = (String) (draggedText.getText());
dropText.setText(draggedText.getText());
if ( Ans.equals("32"))
{
if (loaded)
{
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float actualVolume = (float) audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume / maxVolume;
soundPool.play(soundID, volume, volume, 1, 0, 1f);
Log.e("Test", "Played sound");
}
}
else
{
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float actualVolume = (float) audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume / maxVolume;
soundPool2.play(soundID2, volume, volume, 1, 0, 1f);
Log.e("Test", "Played sound");
}
break;
}
return true;
}
};
OnDragListener dragListener4 = new OnDragListener()
{
@Override
public boolean onDrag(View v, DragEvent event)
{
int dragEvent = event.getAction();
TextView dropText = (TextView) v;
switch(dragEvent)
{
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
TextView draggedText = (TextView)event.getLocalState();
Ans = (String) (draggedText.getText());
dropText.setText(draggedText.getText());
if ( Ans.equals("40"))
{
if (loaded)
{
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float actualVolume = (float) audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume / maxVolume;
soundPool.play(soundID, volume, volume, 1, 0, 1f);
Log.e("Test", "Played sound");
}
}
else
{
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float actualVolume = (float) audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume / maxVolume;
soundPool2.play(soundID2, volume, volume, 1, 0, 1f);
Log.e("Test", "Played sound");
}
break;
}
return true;
}
};
OnDragListener dragListener5 = new OnDragListener()
{
@Override
public boolean onDrag(View v, DragEvent event)
{
int dragEvent = event.getAction();
TextView dropText = (TextView) v;
switch(dragEvent)
{
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
TextView draggedText = (TextView)event.getLocalState();
Ans = (String) (draggedText.getText());
dropText.setText(draggedText.getText());
if ( Ans.equals("48"))
{
if (loaded)
{
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float actualVolume = (float) audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume / maxVolume;
soundPool.play(soundID, volume, volume, 1, 0, 1f);
Log.e("Test", "Played sound");
}
}
else
{
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float actualVolume = (float) audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC);
float maxVolume = (float) audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume / maxVolume;
soundPool2.play(soundID2, volume, volume, 1, 0, 1f);
Log.e("Test", "Played sound");
}
break;
}
return true;
}
};
}
here is my logcat
> 03-22 19:59:39.229: E/AndroidRuntime(32285): FATAL EXCEPTION: main
03-22 19:59:39.229: E/AndroidRuntime(32285): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.timestables/com.example.timestables.Quiz}: java.lang.NullPointerException
03-22 19:59:39.229: E/AndroidRuntime(32285): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2266)
03-22 19:59:39.229: E/AndroidRuntime(32285): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
03-22 19:59:39.229: E/AndroidRuntime(32285): at android.app.ActivityThread.access$600(ActivityThread.java:150)
03-22 19:59:39.229: E/AndroidRuntime(32285): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
03-22 19:59:39.229: E/AndroidRuntime(32285): at android.os.Handler.dispatchMessage(Handler.java:99)
03-22 19:59:39.229: E/AndroidRuntime(32285): at android.os.Looper.loop(Looper.java:213)
03-22 19:59:39.229: E/AndroidRuntime(32285): at android.app.ActivityThread.main(ActivityThread.java:5225)
03-22 19:59:39.229: E/AndroidRuntime(32285): at java.lang.reflect.Method.invokeNative(Native Method)
03-22 19:59:39.229: E/AndroidRuntime(32285): at java.lang.reflect.Method.invoke(Method.java:525)
03-22 19:59:39.229: E/AndroidRuntime(32285): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
03-22 19:59:39.229: E/AndroidRuntime(32285): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
03-22 19:59:39.229: E/AndroidRuntime(32285): at dalvik.system.NativeStart.main(Native Method)
03-22 19:59:39.229: E/AndroidRuntime(32285): Caused by: java.lang.NullPointerException
03-22 19:59:39.229: E/AndroidRuntime(32285): at com.example.timestables.Quiz.onCreate(Quiz.java:70)
03-22 19:59:39.229: E/AndroidRuntime(32285): at android.app.Activity.performCreate(Activity.java:5133)
03-22 19:59:39.229: E/AndroidRuntime(32285): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
03-22 19:59:39.229: E/AndroidRuntime(32285): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2230)
03-22 19:59:39.229: E/AndroidRuntime(32285): ... 11 more
ans3 = (TextView) findViewById(R.id.eight);
You probably meant to initialize ans8
here.