Question

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
Was it helpful?

Solution

ans3 = (TextView) findViewById(R.id.eight);

You probably meant to initialize ans8 here.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top