MapView を取得するには、クラスを MapActivity で拡張する必要があります。これを行おうとすると、「Create MapActivity Class」というエラーが表示されます。
MapActivity で拡張せず、代わりに Activity を使用すると、次の例外が発生します。
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.strive.gostrive/com.strive.gostrive.EventDetailActivity}: android.view.InflateException: Binary XML file line #168: Error inflating class com.google.android.maps.MapView
xml ファイル、Android マニフェスト ファイルに必要な変更を加えました。プロジェクトに Google Play Services ライブラリも含めました。Google Play サービスと私のアプリの両方のターゲットは同じです。
助けが必要!!
ここに私のxmlファイルがあります
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".EventDetailActivity" >
<ImageView
android:id="@+id/eventDImg"
android:layout_width="fill_parent"
android:layout_height="200dp"
android:layout_alignBaseline="@+id/eventDEndDate"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/innershadow" />
<TextView
android:id="@+id/textView2D"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/eventDDateTV"
android:layout_alignBottom="@+id/eventDDateTV"
android:layout_toRightOf="@+id/eventDDateTV"
android:text="-" />
<TextView
android:id="@+id/eventDEndDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView2D"
android:layout_toRightOf="@+id/textView2D"
android:maxLength="10"
android:text="End Date" />
<TextView
android:id="@+id/eventDStartAge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/eventDEndDate"
android:layout_alignLeft="@+id/textView3D"
android:layout_marginLeft="39dp"
android:maxLength="2"
android:text="frm" />
<TextView
android:id="@+id/textView4D"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/eventDEndDate"
android:layout_toRightOf="@+id/eventDStartAge"
android:text="-" />
<TextView
android:id="@+id/eventDAgeTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/eventDEndDate"
android:layout_toRightOf="@+id/textView4D"
android:maxLength="2"
android:text="to" />
<TextView
android:id="@+id/eventDTitleTV"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:maxLines="2"
android:text="Event Title"
android:textSize="20dp" />
<TextView
android:id="@+id/eventDDateTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/eventDTitleTV"
android:layout_centerVertical="true"
android:maxLength="10"
android:text="Strt Date" />
<TextView
android:id="@+id/textView1D"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/eventDTitleTV"
android:layout_marginLeft="180dp"
android:layout_toLeftOf="@+id/eventDPriceTV"
android:text="$"
android:textSize="20dp" />
<TextView
android:id="@+id/textView3D"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/eventDDayTV"
android:layout_alignBaseline="@+id/eventDEndDate"
android:layout_marginLeft="23dp"
android:layout_toRightOf="@+id/eventDTitleTV"
android:text="Ages:" />
<TextView
android:id="@+id/eventDPriceTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1D"
android:layout_alignBottom="@+id/textView1D"
android:layout_alignLeft="@+id/textView3D"
android:text="Event Fee"
android:textSize="20dp" />
<TextView
android:id="@+id/eventDStrtTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/eventDDayTV"
android:layout_marginTop="16dp"
android:text="Strt Tym" />
<TextView
android:id="@+id/eventDEndTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/eventDStrtTime"
android:layout_alignLeft="@+id/eventDEndDate"
android:layout_marginLeft="26dp"
android:text="End tym" />
<TextView
android:id="@+id/eventDVenueTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/eventDEndTime"
android:layout_alignLeft="@+id/eventDGender"
android:text="Venue" />
<TextView
android:id="@+id/eventDDayTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/eventDImg"
android:layout_below="@+id/eventDDateTV"
android:layout_marginTop="31dp"
android:text="M Tu W" />
<TextView
android:id="@+id/eventDGender"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/eventDDayTV"
android:layout_alignBottom="@+id/eventDDayTV"
android:layout_toRightOf="@+id/textView1D"
android:text="gender" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="150dp"
android:layout_alignLeft="@+id/eventDImg"
android:layout_alignRight="@+id/eventDImg"
android:layout_below="@+id/eventDImg"
android:layout_marginTop="16dp"
android:orientation="vertical" >
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="***************************"
android:clickable="true" />
</LinearLayout>
活動内容はこちら
import com.google.android.gms.maps.MapView;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class EventDetailActivity extends Activity{
MapView map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event_detail);
Bundle bundle = getIntent().getExtras();
int position = bundle.getInt("position");
map = (MapView) findViewById(R.id.mapview);
TextView txtEventName = (TextView)findViewById(R.id.eventDTitleTV);
TextView txtEventFee = (TextView)findViewById(R.id.eventDPriceTV);
TextView txtStartDate = (TextView)findViewById(R.id.eventDDateTV);
TextView txtEndDate = (TextView)findViewById(R.id.eventDEndDate);
TextView txtStartAge = (TextView)findViewById(R.id.eventDStartAge);
TextView txtEndAge = (TextView)findViewById(R.id.eventDAgeTV);
TextView txtDaysWeek = (TextView)findViewById(R.id.eventDDayTV);
TextView txtEventGender = (TextView)findViewById(R.id.eventDGender);
txtEventName.setText(EventModel.PREF_EVENTNAME);
txtEventFee.setText(EventModel.PREF_EVENTFEE);
txtStartAge.setText(EventModel.PREF_EVENTSATRTAGE);
txtEndAge.setText(EventModel.PREF_EVENTENDAGE);
txtStartDate.setText(EventModel.PREF_EVENTSTARTDATE);
txtEndDate.setText(EventModel.PREF_EVENTENDDATE);
txtDaysWeek.setText(EventModel.PREF_EVENTDAYSWEEK);
txtEventGender.setText(EventModel.PREF_EVENTGENDER);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.event_detail, menu);
return true;
}
}