我知道這裏有一些類似的問題,但我還沒有看到有這個確切問題的問題。我有ViewPager
,我有MapsActivity.java,它延伸FragmentActivity
。一個標籤我想成爲listView
另一個標籤將會是地圖。使用FragmentPagerAdapter裏面的FragmentActivity地圖
目前適配器接受Fragment
但不是FragmentActivity
這就是地圖。我需要知道最好的方法,因爲我目前的設置如何讓標籤內的地圖。它在自己的活動的標籤之外自行工作,但那不是我想要的地方。我不想使用MapView
,因爲它們太舊了。我正在努力使自己的發展儘可能現代化。
這裏是適配器和在那裏我建立了ViewPager
內的MainActivity.java:
private void setupViewPager(ViewPager viewPager) {
Adapter adapter = new Adapter(getSupportFragmentManager());
adapter.addFragment(new ListFragment(), "Events");
adapter.addFragment(new ListFragment(), "Map");
//where I want to add the MapsActivity^
viewPager.setAdapter(adapter);
}
static class Adapter extends FragmentPagerAdapter {
private final List<Fragment> mFragments = new ArrayList<>();
private final List<String> mFragmentTitles = new ArrayList<>();
public Adapter(FragmentManager fm) {
super(fm);
}
public void addFragment(Fragment fragment, String title) {
mFragments.add(fragment);
mFragmentTitles.add(title);
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitles.get(position);
}
}
這裏是準系統MapsActivity.java我想要得到的標籤內:
public class MapsActivity extends FragmentActivity {
private GoogleMap mMap; // Might be null if Google Play services APK is not available.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
setUpMapIfNeeded();
}
@Override
protected void onResume() {
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
// Do a null check to confirm that we have not already instantiated the map.
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
// Check if we were successful in obtaining the map.
if (mMap != null) {
setUpMap();
}
}
}
private void setUpMap() {
mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
}
}
我試圖從剛剛延長Fragment
噸改變ListFragment.java姑娘o FragmentActivity
,然後是適配器使用的類型。以及List<FragmentActivity> mFragments
,但我遇到了與getItem()
的麻煩。
一旦我作出了上述變化,像這樣:
@Override
public FragmentActivity getItem(int position) {
return mFragments.get(position);
}
有不兼容類型的衝突。 getItem(position)
from ... MainActivity.Adapter與getItem(position)
發生衝突從... support.FragmentPagerAdapter。
請在此選項卡內顯示/建議我以最佳方式獲取此地圖FragmentActivity。
感謝您的回覆,並承擔着我,因爲我還是地圖新手。所以你建議我創建一個新的類,例如_Map.java_。在那個類的內部,我需要'onCreate'等,然後所有的地圖函數都會在那裏發生?然後回到_MapsActivity.java_中,我會拋棄'setUpMap'和'setUpMapIfNeeded'方法,但是保留'onCreate' /'onResume'方法? – erp
幾乎 - 我說完全拋棄'MapsActivity',因爲你不能在你的ViewPager中使用它。你基本上用一個擴展了'MapFragment'的新類來代替你的'MapsActivity', –
好吧,當我嘗試這個時,我嘗試添加'adapter.addFragment(new MapFrag(),「Map」)'我得到一個錯誤,它「找到了com.blah。MapFrag'但需要'android.support.v4.ap.Fragment'「 – erp