Android КАРТА В ТАБЫ - PullRequest
       24

Android КАРТА В ТАБЫ

0 голосов
/ 10 апреля 2011

Эй, я перепробовал множество способов создания вкладок, которые прошли нормально, хотя, когда я добавляю на нее карту, она падает, я пытался сделать то, что сделал этот парень: http://joshclemm.com/blog/?p=86

Мое приложение аварийно завершает работупоявляются любые вкладки.Код ниже:

import android.content.Intent;импорт android.graphics.Color;импорт android.os.Bundle;импорт android.view.View;импорт android.widget.TabHost;import android.widget.TabHost.OnTabChangeListener;import android.widget.TabHost.TabContentFactory;

import com.google.android.maps.MapActivity;import com.google.android.maps.MapView;

открытый класс Tabs расширяет возможности MapActivity OnTabChangeListener {

private static final String HOME_TAG = "Home";
private static final String PLAYERS_TAG = "Players";
private static final String MAP_TAG = "Map";
private static final String TICKET_TAG = "Ticket";

private TabHost tabHost;
private MapView mapView;

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

    tabHost = (TabHost)findViewById(android.R.id.tabhost);
    tabHost.setup();
    tabHost.setOnTabChangedListener(this);

    mapView = (MapView)findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);
    mapView.postInvalidate();

    tabHost.addTab(tabHost.newTabSpec(HOME_TAG).setIndicator("Home").setContent(new Intent(this, Home.class)));
    tabHost.addTab(tabHost.newTabSpec(PLAYERS_TAG).setIndicator("Players").setContent(new Intent(this, Players.class)));
    tabHost.addTab(tabHost.newTabSpec(MAP_TAG).setIndicator("Venue").setContent(new TabContentFactory () {

        public View createTabContent(String arg0) {
            return mapView;
        }
    }));

    for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)
    {
        tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#00CC33"));
    }

    tabHost.getTabWidget().setCurrentTab(0);
    tabHost.getTabWidget().getChildAt(0).setBackgroundColor(Color.parseColor("#3399FF"));
}

public void onTabChanged(String tabId) {
    for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)
        {
            tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#00CC33"));
        }
    tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(Color.parseColor("#3399FF"));
}

@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}

}

И мой манифест:

<application android:icon="@drawable/englandrugbyrose" 
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen">
    <activity android:name=".Splash"
              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=".Tabs" />
    <activity android:name=".Home" />
    <activity android:name=".Players" />
    <activity android:name=".Tickets" />
    <activity android:name=".Map" />

    <uses-library android:name="com.google.android.maps" />

</application>
    <uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.INTERNET" />

Кстати, мой XML находится в разных XML-файлах, таких как map.xml, который содержит идентификатор mapview для загрузки контента, вот единственное отличие между моим и другими парнямиXML.

ОБНОВЛЕНИЕ: logcat

Указывает на строку 35 в mapView.setBuiltInZoomControls (true);За исключением нулевого указателя

Спасибо.

1 Ответ

1 голос
/ 17 июня 2011

Вы пробовали перейти на уровень API 7?У меня была эта проблема с mapView.setBuiltInZoom (true), когда я был на уровне API 8. Исключение прекратилось, когда я перешел на уровень API 7.

...