2017-09-17 7 views
0

これは私のmaps_activity.xmlファイルです。ボタンフィールドを追加しようとすると、エラーMultiple root tagsが表示されます。私はそれが私のGoogleマップのコードでフラグメントレイアウトを使用する必要があります。私はフラグメントレイアウトにボタンを追加するにはどうすればいいですか(GoogleマップAndroidスタジオ)

<Button 
android:id="@+id/button" 
android:layout_width="146dp" 
android:layout_height="wrap_content" 
android:text="Open Store" /> 

を追加しようとすると、私はエラーメッセージMultiple root tagsを取得

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

、私はセクションの前にそれを追加してみました、しかし、それはまだ動作しません!

マイMapsActivityクラスのonCreateメソッド

public class MapsActivity extends AppCompatActivity 
     implements OnMapReadyCallback, 
     GoogleApiClient.ConnectionCallbacks, 
     GoogleApiClient.OnConnectionFailedListener, 
     com.google.android.gms.location.LocationListener{ 

    GoogleMap mGoogleMap; 
    SupportMapFragment mapFrag; 
    LocationRequest mLocationRequest; 
    GoogleApiClient mGoogleApiClient; 
    Location mLastLocation; 
    Marker mCurrLocationMarker; 
    Marker marker; 

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

     getSupportActionBar().setTitle("Map Location Activity"); 

     mapFrag = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
     mapFrag.getMapAsync(this); 

    } 

答えて

0

まで、各XMLレイアウトファイルは、唯一の "ルート" タグを持つことができます。多くの場合、これはある種のViewGroupになります。一般的な例は、LinearLayout,FrameLayout,ConstraintLayoutおよびRelativeLayoutを含む。

適切なものは、目的の目標が何であるかによって異なります。あなたがGoogleマップとButtonだけを述べたことを考慮すると、質問する質問は、これらの2つのものがお互いに隣り合っている(上下にある)か、お互いの上に表示されるかどうかということです。あなたがそれらを/上記のことがお互いの下に、LinearLayoutを選択し、このような何かを書きたい場合は

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    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/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"/> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="146dp" 
     android:layout_height="wrap_content" 
     android:text="Open Store"/> 

</LinearLayout> 

あなたはボタンは、マップの上に浮くFrameLayoutLinearLayoutを変更する代わりに、場合フレームレイアウトに方向性がないため、orientation属性を削除してください。

いずれにしても、すべてのレイアウトには単一のルートしかないという規則に従わなければなりません。つまり、すべてのレイアウトには1つのビューしか表示されませんが、複数のレイアウトがあるとすぐに、すべてのレイアウトに良いボックスを見つけなければなりません。

関連する問題