2012-10-16 3 views
1

저는 Thenewboston의 동영상을 보면서 Android 개발을 연습하고 있습니다.android에서 'onTouchEvent'에 문제가 발생했습니다.

그의 동영상 중 하나에서 onTouchEvent()을 만들려고하는데 오류가 발생했습니다 : Java.lang.NullPointerException.

The newboston 134 number tutorial

어떻게해야합니까?

이제 전체 코드는 다음과 같습니다

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; 
     } 
    } 
} 

내 오류 목록 :

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) 
+3

코드 및 logcat 오류 목록을 추가하십시오 – thepoosh

+2

게시 stacktrace – njzk2

+2

downvoter하려면, 그는 언젠가는 편집하자. –

답변

0

위의 코드에서 long start, stop; 대신 Long start, stop;을 사용했습니다.

4

가 OnTouchListner를 만들어보십시오.

button.setOnTouchListener(new View.OnTouchListener() 
    { 

     public void onClick(View v) 
     { 
      } 
+0

무엇입니까? onTouchListener를 클릭하십시오. ??? –

+0

클릭 이벤트를 수신하여 클릭 기능을 수행합니까? 있을 수있다! – Niko

+0

터치 이벤트 또는 클릭 이벤트를 사용할 수 있습니다. 답변이 잘못되었거나 완료되지 않았습니다. –

0

U는 다음과 같이 할 수있다.

는이

public void onClick(View v){ 

    switch(v.getId()){ 

     case R.id.urbuttonid:{ 

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

     break; 

     } 

    } 

} 
쓰기 당신의 한 OnCreate 방법 후이

android:onClick=onClick 

을 추가하고 활동에 XML 코드보다, 버튼에 (즉, 내가 추측 이벤트를 클릭) 터치를 해고해야 할 말

이 작업을 수행 한 후 로그를 확인하십시오.

관련 문제