Shoshi
Shoshi

Reputation: 2254

having trouble with 'onTouchEvent' in android

I'm practicing on Android development by watching Thenewboston's videos.

From one of his videos, I'm trying to create an onTouchEvent(), but I'm getting error: Java.lang.NullPointerException.

The newboston 134 number tutorial

What should I do?

now the whole code is:

    package com.chupamobile.android.googlemaps;

import java.util.List;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.MotionEvent;

import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;

public class GoogleMapsActivity extends MapActivity {

    MapView map;
    Long start, stop;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        map = (MapView) findViewById(R.id.mymap);
        map.setBuiltInZoomControls(true);

        Touchy t = new Touchy();
        List<Overlay> overlayList = map.getOverlays();
        overlayList.add(t);
    }

    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }

    class Touchy extends Overlay {
        public boolean onTouchEvent(MotionEvent e, MapView m) { 
            if (e.getAction() == MotionEvent.ACTION_DOWN) {
                start = e.getEventTime();
            }
            if (e.getAction() == MotionEvent.ACTION_UP) {
                stop = e.getEventTime();
            }
            if (stop - start > 1500) {
                AlertDialog alert = new AlertDialog.Builder(
                        GoogleMapsActivity.this).create();
                alert.setTitle("Pick an option");
                alert.setMessage("I told u pick an option");
                alert.setButton("Place a pin",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                // TODO Auto-generated method stub

                            }
                        });
                alert.show();
                return true;
            }

            return false;
        }
    }
}

my error list:

Warning: 10-16 10:06:57.106: E/MapActivity(1649): Couldn't get connection factory client


10-16 10:07:03.645: W/dalvikvm(1649): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
10-16 08:17:31.174: W/dalvikvm(1349): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
10-16 08:17:31.334: E/AndroidRuntime(1349): FATAL EXCEPTION: main
10-16 08:17:31.334: E/AndroidRuntime(1349): java.lang.NullPointerException
10-16 08:17:31.334: E/AndroidRuntime(1349):     at com.chupamobile.android.googlemaps.GoogleMapsActivity$Touchy.onTouchEvent(GoogleMapsActivity.java:45)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at com.google.android.maps.OverlayBundle.onTouchEvent(OverlayBundle.java:63)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at com.google.android.maps.MapView.onTouchEvent(MapView.java:679)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.View.dispatchTouchEvent(View.java:5541)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1951)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1712)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1684)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1684)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1684)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1684)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1912)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1371)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.app.Activity.dispatchTouchEvent(Activity.java:2364)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1860)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.View.dispatchPointerEvent(View.java:5721)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2890)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2466)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:845)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2475)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.os.Looper.loop(Looper.java:137)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at android.app.ActivityThread.main(ActivityThread.java:4424)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at java.lang.reflect.Method.invokeNative(Native Method)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at java.lang.reflect.Method.invoke(Method.java:511)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-16 08:17:31.334: E/AndroidRuntime(1349):     at dalvik.system.NativeStart.main(Native Method)

Upvotes: 1

Views: 545

Answers (3)

Shoshi
Shoshi

Reputation: 2254

in my code above i have used Long start, stop; instead of long start, stop; that was the error.

Upvotes: 0

Aamirkhan
Aamirkhan

Reputation: 5784

u can do as below.

say you need to fire touch(i.e click event i guess) in button,than in your xml code add this

android:onClick=onClick

and in your activity just after your oncreate method write this

public void onClick(View v){

   switch(v.getId()){

      case R.id.urbuttonid:{

        Log.e("click event fired?","yes");        

        break;

      }

   }

}

after doing this check your log

Upvotes: 0

Niko
Niko

Reputation: 1377

Try creating an OnTouchListner.

example

    button.setOnTouchListener(new View.OnTouchListener() 
    {

        public void onClick(View v) 
        {
            }

Upvotes: 4

Related Questions