2014-04-28 3 views
1

나는 어리석은 오류라고 느끼지만 그것을 찾을 수 없습니다. 이 코드 위에 GPS 처리를 추가하려고했습니다.AndroidRuntime (5940) : java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo

로그 파일 :

04-28 01:14:59.266: E/AndroidRuntime(5940): FATAL EXCEPTION: main 
04-28 01:14:59.266: E/AndroidRuntime(5940): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.wazeresturant/com.example.wazeresturant.MainActivity}: java.lang.NullPointerException 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at android.app.ActivityThread.access$700(ActivityThread.java:159) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at android.os.Looper.loop(Looper.java:137) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at android.app.ActivityThread.main(ActivityThread.java:5419) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at java.lang.reflect.Method.invoke(Method.java:525) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at dalvik.system.NativeStart.main(Native Method) 
04-28 01:14:59.266: E/AndroidRuntime(5940): Caused by: java.lang.NullPointerException 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at com.example.wazeresturant.MainActivity.onCreate(MainActivity.java:42) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at android.app.Activity.performCreate(Activity.java:5372) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257) 
04-28 01:14:59.266: E/AndroidRuntime(5940):  ... 11 more 

자바 파일 :

import android.app.Activity; 
import android.location.Criteria; 
import android.location.Location; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 

import com.google.android.gms.maps.CameraUpdate; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class MainActivity extends Activity { 

    private GoogleMap map; 
    private final LatLng LOCATION_TA = new LatLng(32.066667, 34.766667);// תל אביב 
    private final LatLng LOCATION_BY = new LatLng(32.023056, 34.750278);// בת ים 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     // יצרת מפה 

     map=((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
     // לאפשר למצוא מקום נוכחי 
     map.setMyLocationEnabled(true); 
     LocationManager lm=(LocationManager)getSystemService(LOCATION_SERVICE); 

     Criteria criteria= new Criteria(); 

     String provider =lm.getBestProvider(criteria, true); 

     Location myLocation=lm.getLastKnownLocation(provider); 

     map.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
     // השגת מיקום נוכחי 
     double latitude = myLocation.getLatitude(); 
     double longitude = myLocation.getLongitude(); 
     // 
     LatLng latlng = new LatLng(latitude,longitude); 
     //למקם אוטמטי למיקום הנוכחי 
     map.moveCamera(CameraUpdateFactory.newLatLng(latlng)); 
     // כמה זום יהיה על המפה 
     map.animateCamera(CameraUpdateFactory.zoomTo(20)); 
     // יצירת חץ במפה במיקום הנוכחי 
     map.addMarker(new MarkerOptions().position(new LatLng(latitude,longitude)).title("You Are Here")); 


    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 


    // כל כפתור מציג או את בתים או ת"א בסוג מפה אחר 
    public void OnClick_City(View v) 
    { 
     map.setMapType(GoogleMap.MAP_TYPE_SATELLITE); 
     CameraUpdate update = CameraUpdateFactory.newLatLngZoom(LOCATION_TA, 9); 
     map.animateCamera(update); 
    } 
    public void OnClick_pepep_A(View v) 
    {// רגיל 
     map.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
     CameraUpdate update = CameraUpdateFactory.newLatLngZoom(LOCATION_TA, 16); 
     map.animateCamera(update); 
    } 
    public void OnClick_pepep_B(View v) 
    {// רגיל 
     map.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
     CameraUpdate update = CameraUpdateFactory.newLatLngZoom(LOCATION_BY, 10); 
     map.animateCamera(update); 
    } 

} 

주요 XML 파일 :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/btcity" 
     android:layout_centerHorizontal="true" 
     android:onClick="OnClick_pepep_A" 
     android:text="@string/pepe_a" /> 

    <fragment 
      android:id="@+id/map" 
      android:name="com.google.android.gms.maps.MapFragment" 
      class="com.google.android.gms.maps.MapFragment" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@+id/button2" 
      /> 

    <Button 
     android:id="@+id/btcity" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/map" 
     android:layout_alignParentTop="true" 
     android:onClick="OnClick_City" 
     android:text="@string/City"/> 

    <Button 
     android:id="@+id/button3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/button2" 
     android:layout_alignRight="@+id/map" 
     android:onClick="OnClick_pepep_B" 
     android:text="@string/pepe_b"/> 

</RelativeLayout> 

및 매니페스트 파일 :

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.wazeresturant" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <permission 
     android:name="com.example.wazeresturant.premission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="com.example.wazeresturant.premission.MAPS_RECEIVE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <!-- Google Maps Android API v2, but are recommended. --> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

    <uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="19" /> 

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="XXXX" /> 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

     <activity 
      android:name="com.example.wazeresturant.MainActivity" 
      android:label="@string/app_name" > 
     </activity> 
     <activity 
      android:name="com.example.wazeresturant.LoginActivity" 
      android:label="@string/title_activity_login" > 
     </activity> 
     <activity 
      android:name="com.example.wazeresturant.RegisterActivity" 
      android:label="@string/title_activity_register" > 
     </activity> 
     <activity 
      android:name="com.example.wazeresturant.FirstScreenActivity" 
      android:label="@string/title_activity_first_screen" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <uses-library android:name="com.google.android.maps" /> 

     <activity 
      android:name="com.example.wazeresturant.MainActivity" 
      android:label="@string/title_activity_amain" > 
     </activity> 
    </application> 

</manifest> 
+1

예외는'onCreate()'에 있지만, 모든 것을 주석 처리했습니다. 일치하는 코드와 스택 추적을 제공하십시오. 아마도 'myLocation'은 null입니다. – laalto

+0

이것은 실수입니다, 그것의 sepose가 그것의 sepose가 un commented 인 것처럼 보이지 않도록합니다. 나는 그것을 on 메소드를 입력하는 것이고 거기에 모든 것이 없는지 점검해야했습니다. – Asaf

+0

라인 번호 42는 무엇입니까? – Kedarnath

답변

0

private GoogleMap map;을 선언했지만이 변수를 초기화 한 코드에 주석 처리했습니다.

onCreate() 메소드에서 아래 행의 주석을 취소 하시길 바랍니다.

setContentView(R.layout.main); 
map=((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

이렇게하면 확실하게 NullPointerException 오류가 해결됩니다.

+0

이것은 실수입니다, 그것의 sepose가 그것의 sepose가 un commented 인 것처럼 보이지는 않습니다. – Asaf

1

지도가 여기 널 :

map.setMapType(GoogleMap.MAP_TYPE_SATELLITE); 

그것을에서 onCreate 초기화().

+0

'onCreate()'의 스택 추적을 설명하지 않습니다. – laalto

+0

onclick이이 줄을 exept 찾을 수 없습니다. – Asaf

0

액티비티 대신 MapActivity을 사용하십시오.

+0

그 중 하나를 수정하지, 같은 문제 – Asaf

관련 문제