2017-12-17 3 views
0

AppCompatActivityを拡張しないとエラーが発生します。私はAppCompatActivityが必要ですが、MapTabActivityは既に拡張されていますSupportMapFragment

どうすれば解決できますか?

私はエラーが

発見された場所は、私は「この」何か他のものとを交換することができ HERE を市場にしましたか?

私は自分のツールバーを作ることができると思っています。

MapTabActivity.java

package com.example.game1; 

import android.content.Context; 
import android.content.DialogInterface; 
import android.content.pm.PackageManager; 
import android.location.Criteria; 
import android.location.Location; 
import android.location.LocationManager; 
import android.os.Build; 
import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.support.annotation.Nullable; 
import android.support.v4.app.ActivityCompat; 
import android.support.v4.content.ContextCompat; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Toast; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.location.LocationListener; 
import com.google.android.gms.location.LocationRequest; 
import com.google.android.gms.location.LocationServices; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 

public class MapTabActivity extends SupportMapFragment 
    implements OnMapReadyCallback, 
    GoogleApiClient.ConnectionCallbacks, 
    GoogleApiClient.OnConnectionFailedListener, 
    LocationListener { 

AppCompatActivity appCompatActivity; 
GoogleMap mGoogleMap; 
SupportMapFragment mapFrag; 
LocationRequest mLocationRequest; 
GoogleApiClient mGoogleApiClient; 
Location mLastLocation; 
Marker mCurrLocationMarker; 
int Latitute; 
int Longitute; 
LatLng latLon; 


    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, 
         @Nullable Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.activity_map, container, false); 
    return rootView; 

} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    mapFrag = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)); 
    mapFrag.getMapAsync(this); 
} 

@Override 
public void onPause() { 
    super.onPause(); 

    //stop location updates when Activity is no longer active 
    if (mGoogleApiClient != null) { 
     LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient,this); 
    } 
} 

@Override 
public void onMapReady(GoogleMap googleMap) 
{ 
    mGoogleMap=googleMap; 
    mGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 



    //Initialize Google Play Services 
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     if (ContextCompat.checkSelfPermission(this, **HERE** 
       android.Manifest.permission.ACCESS_FINE_LOCATION) 
       == PackageManager.PERMISSION_GRANTED) { 
      //Location Permission already granted 
      buildGoogleApiClient(); 
      mGoogleMap.setMyLocationEnabled(true); 
     } else { 
      //Request Location Permission 
      checkLocationPermission(); 
     } 
    } 
    else { 
     buildGoogleApiClient(); 
     mGoogleMap.setMyLocationEnabled(true); 
    } 

    //zoom map camera 
    // Get LocationManager object 
    LocationManager locationManager = (LocationManager) getSystemService **<-HERE** (Context.LOCATION_SERVICE); 

    // Create a criteria object to retrieve provider 
    Criteria criteria = new Criteria(); 

    // Get the name of the best provider 
    String provider = locationManager.getBestProvider(criteria, true); 

    // Get Current Location 
    Location myLocation = locationManager.getLastKnownLocation(provider); 

    //latitude of location 
    double myLatitude = myLocation.getLatitude(); 

    //longitude og location 
    double myLongitude = myLocation.getLongitude(); 

    LatLng latLon = new LatLng(myLatitude, myLongitude); 
    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLon,17)); 
} 

protected synchronized void buildGoogleApiClient() { 
    mGoogleApiClient = new GoogleApiClient.Builder(this) **HERE** 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(LocationServices.API) 
      .build(); 
    mGoogleApiClient.connect(); 
} 

@Override 
public void onConnected(Bundle bundle) { 
    mLocationRequest = new LocationRequest(); 
    mLocationRequest.setInterval(1000); 
    mLocationRequest.setFastestInterval(1000); 
    mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY); 
    if (ContextCompat.checkSelfPermission(this,**HERE** 
      android.Manifest.permission.ACCESS_FINE_LOCATION) 
      == PackageManager.PERMISSION_GRANTED) { 
     LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); 
    } 
} 

@Override 
public void onLocationChanged(Location location) 
{ 

    // Elegxos gia to an eftases se marker 
    //liga dekadika 

} 


public static final int MY_PERMISSIONS_REQUEST_LOCATION = 99; 
private void checkLocationPermission() { 
    if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)**HERE** 
      != PackageManager.PERMISSION_GRANTED) { 

     // Should we show an explanation? 
     if (ActivityCompat.shouldShowRequestPermissionRationale(this,**HERE** 
       android.Manifest.permission.ACCESS_FINE_LOCATION)) { 

      // Show an explanation to the user *asynchronously* -- don't block 
      // this thread waiting for the user's response! After the user 
      // sees the explanation, try again to request the permission. 
      new AlertDialog.Builder(this) 
        .setTitle("Location Permission Needed") 
        .setMessage("This app needs the Location permission, please accept to use location functionality") 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialogInterface, int i) { 
          //Prompt the user once explanation has been shown 
          ActivityCompat.requestPermissions(MapTabActivity.this,**HERE** 
            new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 
            MY_PERMISSIONS_REQUEST_LOCATION); 
         } 
        }) 
        .create() 
        .show(); 


     } else { 
      // No explanation needed, we can request the permission. 
      ActivityCompat.requestPermissions(this,**HERE** 
        new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 
        MY_PERMISSIONS_REQUEST_LOCATION); 
     } 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case MY_PERMISSIONS_REQUEST_LOCATION: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       // permission was granted, yay! Do the 
       // location-related task you need to do. 
       if (ContextCompat.checkSelfPermission(this,**HERE** 
         android.Manifest.permission.ACCESS_FINE_LOCATION) 
         == PackageManager.PERMISSION_GRANTED) { 

        if (mGoogleApiClient == null) { 
         buildGoogleApiClient(); 
        } 
        mGoogleMap.setMyLocationEnabled(true); 
       } 

      } else { 

       // permission denied, boo! Disable the 
       // functionality that depends on this permission. 
       Toast.makeText(this, "permission denied", Toast.LENGTH_LONG).show();**HERE** 
      } 
      return; 
     } 

     // other 'case' lines to check for other 
     // permissions this app might request 
    } 
} 

@Override 
public void onConnectionSuspended(int i) { 

} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 

} 

}

you can see the errors in this picure

+2

とフラグメント、これをチェックしてください:https://developer.android.com/training/basics/fragments/index.html – donfuxx

+0

ところで、あなたは 'getChildFragmentManager'を必要としません。現在のクラスは既にSupportMapFragmentなので、別のものをロードしないでください。 –

答えて

0

あなたはSupportMapFragmentを使用して、その

getActivity()またはgetContext()てみてくださいされています。

getActivity() - このフラグメントが現在関連付けられているアクティビティを返します。

getContext()

は、それが現在のテーマ、リソースにアクセスするためのビューがで実行されている状況、などを返します

例あなたが活動を混同している

Toast.makeText(getContext(), "permission denied", Toast.LENGTH_LONG).show(); 
+0

@PhilippSchは 'this'の代わりに' getContext() 'を追加します。 –

+0

@PhilippSchに通知させてください。ここで作業を習慣 –

+0

'ActivityCompat.requestPermissions(getActivity()、 新しいString [] {android.Manifest.permission.ACCESS_FINE_LOCATION}' 又はここで:「(ContextCompat.checkSelfPermission(getActivity()、 android.Manifest。 「??これについて ますそれ と何permission.ACCESS_FINE_LOCATION)ActivityCompat.requestPermissions(MapTabActivity.this、 新しいStringは[] ' –

関連する問題