2015-11-10 45 views
1

我知道有很多這樣的問題,但我找不到任何有用的接受答案。Intellij Android應用程序中的谷歌地圖15

我試圖(和其他幾個人也):

  1. stackoverflow.com/questions/17960315/importing-google-play-services-lib-into-intellij-idea-12-and- 17977734分之13#17977734
  2. stackoverflow.com/questions/14372391/java-lang-noclassdeffounderror-com-google-android-gms-rstyleable/15826818#15826818
  3. stackoverflow.com/questions/14002488/google-play- services-library-in-intellij-12

但到目前爲止,沒有任何工作......我不知道這是智能問題還是我的問題。

這裏有一些截圖

i.stack.imgur.com/Wfm9k.png

i.stack.imgur.com/bcShb.png

i.stack.imgur.com/ SNkSZ.png

我試過把它作爲一個模塊直接從android-sdk/extras/....導入,我試圖複製粘貼到我的工作區中的整個google-services項目沒有任何作用。屏幕截圖僅來自我發現並嘗試的最後一個setUp(教程/答案)。

這是當前的錯誤:

java.lang.RuntimeException: Unable to start activity ComponentInfo{hci4.project.FriendsWithCars/hci4.project.FriendsWithCars.MainActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class fragment 
Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class fragment 
Caused by: android.app.Fragment$InstantiationException: Trying to instantiate a class com.google.android.gms.maps.SupportMapFragment that is not a Fragment 

請幫助我。

EDIT 1: 以下是在一個新設置新的錯誤....

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 

public class MainActivity extends Activity { 
private GoogleMap map; 

/** 
* Called when the activity is first created. 
*/ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_activity); 

    // Testing 
    TextView tv = (TextView) findViewById(R.id.TESTING); 
    DBHandler db = DBHandler.getInstance(this); 
    String output = db.getFullDB(); 
    tv.setText(output); 

    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
      .getMap(); 
} 
} 

這裏是main.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
<TextView 
     android:id="@+id/TESTING" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Hello World, MainActivity" 
/> 

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

錯誤:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/R$styleable; 
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.R$styleable" on path: DexPathList[[zip file "/data/app/hci4.project.FriendsWithCars-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.R$styleable 
+0

最快的解決辦法:下載Android工作室:) –

回答

0

旁邊的問題:1.你的設置是什麼? 2.您如何導入GMS?

我認爲你的問題是你在創建它之前調用了這個片段,而且在它被連接之前就更少了。不要在onCreate()上調用它。在onActivityCreated()之後調用它。

你可能會需要這樣的東西里面onActivityCreated()

  // Check what fragment is currently shown, replace if needed. 
      MapFragment map= (MapFragment) 
        getFragmentManager().findFragmentById(R.id.map); 
      if (map== null) { 
       // Make new fragment to show this selection. 
       map= MapFragment .newInstance(); 

       // Execute a transaction, replacing any existing fragment 
       // with this one inside the frame. 
       FragmentTransaction ft = getFragmentManager().beginTransaction(); 
       ft.replace(R.id.map, map); 
       ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
       ft.commit(); 
      } 
0

我終於設法使其工作。對於這裏未來的參考是我做過什麼:

  1. 下載「谷歌播放服務」和「谷歌庫」和「谷歌支持庫」,從SDK管理器
  2. 轉到Android的軟件開發工具包/演員/谷歌/ google_play_services/libproject某處複製谷歌的播放,services_lib目錄
  3. 粘貼您的系統目錄(我粘貼它在同一水平作爲我的項目根)

../google-play-services_lib/

../Project/

../Project/.git

../Project/src

  • 轉到項目設定(CMD +)並轉到模塊
  • 按+中間一欄上面添加一個新的模塊
  • 選擇「導入模塊」
  • 選擇路徑粘貼谷歌的服務目錄
  • 來自的IntelliJ一連串的問題上,您重播NEXT
  • 如果的IntelliJ詢問您是否要重用覆蓋的.idea/.iml文件選擇** *重用
  • 返回到項目結構/模塊並選擇上面的「依賴存儲格式」下方的主模塊
  • 按+,然後選擇「模塊」
  • 再次選擇谷歌的服務模塊
  • 按+,選擇「罐......」
  • 給這個路徑在粘貼的谷歌服務目錄中的.jar(必須是在庫)
  • ,谷歌此舉賞玩services_lib到列表
  • 頂部到底,必須看像你需要這個 End Result

    所有權限(他們去上面的AndroidManifest ...)

    <permission 
         android:name="com.vogella.android.locationapi.maps.permission.MAPS_RECEIVE" 
         android:protectionLevel="signature" /> 
    
    <uses-feature 
         android:glEsVersion="0x00020000" 
         android:required="true" /> 
    
    <uses-permission android:name="com.vogella.android.locationapi.maps.permission.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" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    

    所有的應用程序設置喲u需要(他們進入)

    <meta-data android:name="com.google.android.gms.version" 
           android:value="@integer/google_play_services_version" /> 
    
        <meta-data 
          android:name="com.google.android.maps.v2.API_KEY" 
          android:value="KEY-FROM-GOOGLE" /> 
    

    我希望這有助於人們...

    相關問題