2013-05-28 3 views
0

, поэтому у меня есть приложение, оно включает в себя все сервисы google play .... но я все еще получаю сообщение об ошибке и сбое в работе. продвинутый. MainActivity.javaGoogle Maps API v2 ......... Головная боль

 public class MainActivity extends FragmentActivity { 
     SupportMapFragment mMap; 
     GoogleMap googleMap; 
     TabHost tabHost; 

     @SuppressLint("SetJavaScriptEnabled") 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      // Load Webview 
      WebView myWebView = (WebView) findViewById(R.id.webView1); 
      WebSettings webSettings = myWebView.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      myWebView.setWebViewClient(new WebViewClient()); 
      myWebView.loadUrl("http://www.salespharma.com/sptouch/msplogin.htm"); 
      // Remove ActionBar 
      getActionBar().hide(); 
      // Setup the tabhost 
      tabHost = (TabHost) findViewById(R.id.tabHost); 
      tabHost.setup(); 

      TabSpec spec1 = tabHost.newTabSpec("SPtouch"); 
      spec1.setContent(R.id.tab1); 
      spec1.setIndicator("SPtouch"); 

      TabSpec spec2 = tabHost.newTabSpec("GeoLocation"); 
      spec2.setIndicator("GeoLocation"); 
      spec2.setContent(R.id.tab2); 

      tabHost.addTab(spec1); 
      tabHost.addTab(spec2); 
      mMap = (SupportMapFragment) getSupportFragmentManager() 
        .findFragmentById(R.id.map); 

      googleMap = mMap.getMap(); 
      // mMap = ((MapFragment) 
      // getFragmentManager().findFragmentById(R.id.map)).getMap(); 
      // Flip view 

     } 

     public void LoadActivity() { 
      Intent startNewActivityOpen = new Intent(MainActivity.this, 
        Settings.class); 
      startActivityForResult(startNewActivityOpen, 0); 
     } 

     public boolean onOptionsItemSelected(MenuItem item) { 
      // Handle item selection 
      switch (item.getItemId()) { 
      case R.id.action_settings: 
       LoadActivity(); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
      } 
     } 

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

     } 

XML-

 <TabHost 
      android:id="@+id/tabHost" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_alignParentLeft="true" > 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" > 

       <TabWidget 
        android:id="@android:id/tabs" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" > 
       </TabWidget> 

       <FrameLayout 
        android:id="@android:id/tabcontent" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" > 

        <LinearLayout 
         android:id="@+id/tab1" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" > 

         <WebView 
          android:id="@+id/webView1" 
          android:layout_width="match_parent" 
          android:layout_height="match_parent" /> 
        </LinearLayout> 

        <LinearLayout 
         android:id="@+id/tab2" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" > 

         <fragment 
          android:id="@+id/map" 
          android:layout_width="match_parent" 
          android:layout_height="match_parent" 
          class="com.google.android.gms.maps.SupportMapFragment" /> 
        </LinearLayout> 
       </FrameLayout> 
      </LinearLayout> 
     </TabHost> 

    </RelativeLayout> 

Манифест

<uses-sdk 
     android:minSdkVersion="14" 
     android:targetSdkVersion="17" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 

    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="***********************************" /> 

    <permission 
     android:name="com.salespharma.sptouchbeta.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="com.salespharma.sptouchbeta.permission.MAPS_RECEIVE" /> 

    <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" > 

     <activity 
      android:name="com.salespharma.sptouchbeta.MainActivity" 
      android:label="@string/app_name" > 

      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="Settings" 
      android:icon="@drawable/ic_launcher" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme" > 
     </activity> 
    </application> 

</manifest> 

И, наконец, LogCat ... Имейте в виду, я реферирована библиотека! Логарифг говорит мне, что не найден.

05-28 19:21:05.210: D/webcoreglue(29886): netstack: Memory Cache feature is OFF 
05-28 19:21:05.330: E/ActivityThread(29886): Failed to inflate 
05-28 19:21:05.330: E/ActivityThread(29886): android.view.InflateException: Binary XML file line #2: Error inflating class fragment 
05-28 19:21:05.330: E/ActivityThread(29886): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.view.LayoutInflater.parseInclude(LayoutInflater.java:807) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.view.LayoutInflater.rInflate(LayoutInflater.java:736) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
05-28 19:21:05.330: E/ActivityThread(29886): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:276) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.app.Activity.setContentView(Activity.java:1867) 
05-28 19:21:05.330: E/ActivityThread(29886): at com.salespharma.sptouchbeta.MainActivity.onCreate(MainActivity.java:29) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.app.Activity.performCreate(Activity.java:5008) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2145) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2216) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.app.ActivityThread.access$600(ActivityThread.java:146) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.os.Looper.loop(Looper.java:137) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.app.ActivityThread.main(ActivityThread.java:5012) 
05-28 19:21:05.330: E/ActivityThread(29886): at java.lang.reflect.Method.invokeNative(Native Method) 
05-28 19:21:05.330: E/ActivityThread(29886): at java.lang.reflect.Method.invoke(Method.java:511) 
05-28 19:21:05.330: E/ActivityThread(29886): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
05-28 19:21:05.330: E/ActivityThread(29886): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) 
05-28 19:21:05.330: E/ActivityThread(29886): at dalvik.system.NativeStart.main(Native Method) 
05-28 19:21:05.330: E/ActivityThread(29886): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public 
05-28 19:21:05.330: E/ActivityThread(29886): at android.app.Fragment.instantiate(Fragment.java:584) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.app.Fragment.instantiate(Fragment.java:552) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.app.Activity.onCreateView(Activity.java:4656) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 
05-28 19:21:05.330: E/ActivityThread(29886): ... 26 more 
05-28 19:21:05.330: E/ActivityThread(29886): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment 
05-28 19:21:05.330: E/ActivityThread(29886): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
05-28 19:21:05.330: E/ActivityThread(29886): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
05-28 19:21:05.330: E/ActivityThread(29886): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
05-28 19:21:05.330: E/ActivityThread(29886): at android.app.Fragment.instantiate(Fragment.java:574) 
05-28 19:21:05.330: E/ActivityThread(29886): ... 29 more 
05-28 19:21:05.350: D/AndroidRuntime(29886): Shutting down VM 
05-28 19:21:05.350: W/dalvikvm(29886): threadid=1: thread exiting with uncaught exception (group=0x41ffd500) 
05-28 19:21:05.350: E/AndroidRuntime(29886): FATAL EXCEPTION: main 
05-28 19:21:05.350: E/AndroidRuntime(29886): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.salespharma.sptouchbeta/com.salespharma.sptouchbeta.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2191) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2216) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.ActivityThread.access$600(ActivityThread.java:146) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.os.Looper.loop(Looper.java:137) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.ActivityThread.main(ActivityThread.java:5012) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at java.lang.reflect.Method.invokeNative(Native Method) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at java.lang.reflect.Method.invoke(Method.java:511) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at dalvik.system.NativeStart.main(Native Method) 
05-28 19:21:05.350: E/AndroidRuntime(29886): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.view.LayoutInflater.parseInclude(LayoutInflater.java:807) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.view.LayoutInflater.rInflate(LayoutInflater.java:736) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:276) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.Activity.setContentView(Activity.java:1867) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at com.salespharma.sptouchbeta.MainActivity.onCreate(MainActivity.java:29) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.Activity.performCreate(Activity.java:5008) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2145) 
05-28 19:21:05.350: E/AndroidRuntime(29886): ... 11 more 
05-28 19:21:05.350: E/AndroidRuntime(29886): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.Fragment.instantiate(Fragment.java:584) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.Fragment.instantiate(Fragment.java:552) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.Activity.onCreateView(Activity.java:4656) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 
05-28 19:21:05.350: E/AndroidRuntime(29886): ... 26 more 
05-28 19:21:05.350: E/AndroidRuntime(29886): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment 
05-28 19:21:05.350: E/AndroidRuntime(29886): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
05-28 19:21:05.350: E/AndroidRuntime(29886): at android.app.Fragment.instantiate(Fragment.java:574) 
05-28 19:21:05.350: E/AndroidRuntime(29886): ... 29 more 

Некоторые скриншоты для справки!

http://i.stack.imgur.com/0IcLu.png http://i.stack.imgur.com/gzmfS.png

ответ

1

Несколько указателей здесь:

  1. Внутри вашего AndroidManifest.xml:

    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="***********************************" />

    должны располагаться внутри тега <application>

  2. Вы не имеете google-play-services_lib внутри вашего менеджера проекта, вот что я имел на моей установке:

    Project Setup

    Обратите внимание там, у меня есть google-play-services_lib.jar с google-play-services.jar, вам нужно будет импортировать Google Play Services Library в ваше рабочее пространство, убедитесь, что проект открыт, а затем импортировать его в качестве библиотеки для других проектов

удачи !!

EDIT:

This Link даст вам шаг за шагом руководство по быстрому началу для Android API v2, для вашего случая, я думаю, вам нужно всего лишь следовать руководству, начиная с шага 1 по шаг 4:)

EDIT 2:

Теперь я предлагаю вам сделать больше исследований по этой проблеме, вот как:

  1. Попробуйте отобразить только карту в своем приложении, если карта отобразится, то объявление вашего макета имеет ошибки. Если приложение выходит из строя, у вас есть ошибка, связанная с библиотекой.
  2. Если возникает ошибка ссылки, попробуйте создать новый проект, импортируйте google-play-services_lib в свой проект и попробуйте сначала отобразить карту.Когда он отобразится, измените код, чтобы он соответствовал текущему коду, который у вас есть.

Удачи: D

+0

Спасибо за ответ, я заметил, что вы не андроид частные зависимостей. Как удалить тот, который у меня есть, и переместить все JARS в зависимости от android ... Еще раз спасибо. Изображение, которое покажет вам мой прогресс [link] (http://imgur.com/HXmCjku) – M0NKEYRASH

+0

Не беспокойтесь о 'частных зависимостях Android', попробуйте удалить библиотеку' go play play' из вашего пути сборки, а затем повторно -введите его, используя мой метод: D – reidzeibel

+0

Я отредактировал свой ответ, пожалуйста, проверьте ссылку там, он даст вам пошаговое руководство, шаг за шагом от 1-4 – reidzeibel

Смежные вопросы