2017-01-25 6 views
0

Я новичок в разработке android. Я хочу разработать приложение с тремя вкладками.Создание карты google во вкладке с местоположением gps, помеченным в студии android

  1. Первая вкладка будет My Location, в котором есть карта и штифт, маркировка моего местоположения
  2. На второй вкладке будет вариант камеры, с помощью которой я могу снимать и эти фотографии будут сохранены в памяти, расположенной операционной системой для приложения.
  3. Сохраненные снимки будут показаны в ползуне

Что касается 2 и 3, я буду иметь некоторое представление, но для 1 я не мог найти какой-либо помощи. Я нашел несколько учебников, но все они для eclipse, но я использую android studio.

Во время исследования я обнаружил, что Fragment - это способ сделать это, поэтому я начал следить за этим tutorial, но, как я сказал ранее, я новичок, и все учебники предназначены для eclipse.

Update 1

я создал 3-х классов и 3 раскладка каждый для каждой вкладки, ниже класс для MyLocation вкладке

public class MyLocation extends Fragment{ 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.my_location, container, false); 


    return rootView; 
} } 

Я прилипла к нему сейчас и не знаю, что делать

Любая помощь будет высоко оценен

+0

Какова ваша проблема на самом деле, где вы застряли? вы создаете вкладку и фрагменты? –

+0

Да, я создал вкладки, используя 'tab activity', а также создал фрагменты – faisal1208

+0

, чем ваша проблема, внутри фрагмента вы можете использовать карту –

ответ

0

Если вы хотите создать карту Google внутри фрагмента, чем идти метала этот код

public class GoogleMapFragment extends Fragment implements OnMapReadyCallback, 
    GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ 

private GoogleMap googleMap; 
GoogleApiClient mGoogleApiClient; 
Location mLastLocation; 


@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment_demo, container, false); 
} 

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    if (mGoogleApiClient == null) { 
     mGoogleApiClient = new GoogleApiClient.Builder(getActivity()) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(LocationServices.API) 
       .build(); 
    } 
    mGoogleApiClient.connect(); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    intiGoogleMap(); 
} 

@Override 
public void onStart() { 
    mGoogleApiClient.connect(); 
    super.onStart(); 
} 

@Override 
public void onStop() { 
    mGoogleApiClient.disconnect(); 
    super.onStop(); 
} 

@Override 
public void onDestroyView() { 
    super.onDestroyView(); 
    SupportMapFragment supportMapFragment = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.mapMapAddress)); 
    if (supportMapFragment != null) 
     getFragmentManager().beginTransaction().remove(supportMapFragment).commit(); 
} 

private void intiGoogleMap() { 
    SupportMapFragment supportMapFragment = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.mapMapAddress)); 
    supportMapFragment.getMapAsync(this); 
} 


@Override 
public void onConnected(@Nullable Bundle bundle) { 
    //First check permissions if accept or reject 
    if (AppUtils.checkPermission(Manifest.permission.ACCESS_FINE_LOCATION, getActivity()) && 
      AppUtils.checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION, getActivity())) { 
     mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
       mGoogleApiClient); 
     if (googleMap != null) 
      if (mLastLocation != null) { 
       //here you can place your marker 
      } 
    } else { 
     Toast.makeText(getActivity(), "Check your permission", Toast.LENGTH_LONG).show(); 
    } 
} 

@Override 
public void onConnectionSuspended(int i) { 

} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 

} 

@Override 
public void onMapReady(GoogleMap googleMap) { 
    if (googleMap != null) { 
     this.googleMap = googleMap; 
     this.googleMap.getUiSettings().setMyLocationButtonEnabled(true); 
     this.googleMap.getUiSettings().setCompassEnabled(true); 
    } 
} 

}

и fragment_demo.xml является

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <fragment 
     android:id="@+id/mapMapAddress" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</RelativeLayout> 

и попробуйте запустить это будет показывать карты Google, и убедитесь, что все разрешения и вы создали приложение в консоли разработчика Google. Также убедитесь, что добавили Android-ключ в манифест.

+0

Я действительно добавляю фрагмент, но это давало мне ошибку пользовательского интерфейса. – faisal1208

+0

Не могли бы вы заглянуть в мой новый вопрос http: // stackoverflow.ком/вопросы/41875474/Google-карта-оленья кожа натяга-в-мое-приложение-устройство – faisal1208