2015-10-29 4 views
1

Hotel_Location.xml:Как получить доступ Fragment тег в другую деятельность в андроиде

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

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

</RelativeLayout> 

HotelLocation.java:

public class HotelLocation extends Fragment { 

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

} 

HotelDetails.java

public class HotelDetails extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_hotel_details); 

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
    tabLayout.addTab(tabLayout.newTab().setText("Location")); 
    tabLayout.addTab(tabLayout.newTab().setText("Direction")); 
    tabLayout.setTabTextColors(getResources().getColorStateList(android.R.color.black)); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
    final MapsPagerAdapter adapter = new MapsPagerAdapter 
      (getSupportFragmentManager(), tabLayout.getTabCount()); 
    viewPager.setAdapter(adapter); 
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() 
{ 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 


     SupportMapFragment supportMapFragment = 
       (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.googleMapLocation); 

     googleMap = supportMapFragment.getMap(); 
     googleMap.setMyLocationEnabled(true); 
     LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
     Criteria criteria = new Criteria(); 
     String bestProvider = locationManager.getBestProvider(criteria, true); 
     location = locationManager.getLastKnownLocation(bestProvider); 
     if (location != null) { 
      onLocationChanged(location); 
     } 
     locationManager.requestLocationUpdates(bestProvider, 10000, 0, 
     this); 

} 
} 

supportMapFragment возвращается нулем во время выполнения.

Я делаю что-то неправильно. Кто-нибудь может мне помочь, пожалуйста. Заранее спасибо

ответ

0

Установили ли вы права доступа в файле AndroidManifest? Кроме того, вы должны указать ключ API Карт Google, который вы получаете из Консоли Google, чтобы получить доступ к сервису Google для отображения карт. Также необходимо Google услуги воспроизведения включена в Google консоль, а затем включает в себя сервисы Google Play как андроид проект библиотеки в ваш проект ..

Вот хороший учебник о том, как использовать карту Google в андроида проекта: http://javapapers.com/android/android-show-current-location-on-map-using-google-maps-api/

0

findFragmentById() метод является членом активности и пытается вызвать любой фрагмент в своем контейнере макета, а не как метод findViewById(). Представление вашего контента - R.layout.activity_hotel_details, но вы пытаетесь получить доступ к фрагменту из R.layout.Hotel_Location.

Вы можете инициализировать экземпляр фрагмента карты и обработать операции фрагмента в классе фрагмента.

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