2016-09-04 1 views
0

Привет, я пытаюсь найти место в фрагменте. но я не могу получить место.Как добраться в Фрагмент?

LocationManager locationmanager= (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); возвращение null.how можно исправить

SocialFragment.java

public class SocialFragment extends Fragment { 
MapView mMapView; 
private GoogleMap googleMap; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.activity_maps, container, false); 

    mMapView = (MapView) rootView.findViewById(R.id.map); 
    mMapView.onCreate(savedInstanceState); 

    mMapView.onResume(); // needed to get the map to display immediately 

    try { 
     MapsInitializer.initialize(getActivity().getApplicationContext()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    mMapView.getMapAsync(new OnMapReadyCallback() { 
     @Override 
     public void onMapReady(GoogleMap mMap) { 
      googleMap = mMap; 
      // For dropping a marker at a point on the Map 
      LatLng sydney = new LatLng(-34, 151); 
      googleMap.addMarker(new MarkerOptions().position(sydney).title("Marker Title").snippet("Marker Description")); 
      // For zooming automatically to the location of the marker 
      CameraPosition cameraPosition = new CameraPosition.Builder().target(sydney).zoom(12).build(); 
      googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 

      LocationManager locationmanager= (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); 
      Criteria criteria = new Criteria(); 
      String provider = locationmanager.getBestProvider(criteria, false); 
      if (ActivityCompat.checkSelfPermission(getContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
       // TODO: Consider calling 
       // ActivityCompat#requestPermissions 
       // here to request the missing permissions, and then overriding 
       // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
       //           int[] grantResults) 
       // to handle the case where the user grants the permission. See the documentation 
       // for ActivityCompat#requestPermissions for more details. 
       return; 
      } 
      mMap.setMyLocationEnabled(true); 

     } 
    }); 

    return rootView; 
} 



@Override 
public void onResume() { 
    super.onResume(); 
    mMapView.onResume(); 
} 

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

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    mMapView.onDestroy(); 
} 

@Override 
public void onLowMemory() { 
    super.onLowMemory(); 
    mMapView.onLowMemory(); 
} 

}

MainActivity.java

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 
FragmentManager mFragmentManager; 
FragmentTransaction mFragmentTransaction; 
ArrayList country, city, districts; 
StringBuffer stringBuffer = new StringBuffer(); 
String response; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

    mFragmentManager = getSupportFragmentManager(); 
    mFragmentTransaction = mFragmentManager.beginTransaction(); 
    mFragmentTransaction.replace(R.id.containerView, new TabFragment()).commit(); 

    try { 
     City(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 
     super.onBackPressed(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

    if (id == R.id.nav_camera) { 

     // Handle the camera action 
    } else if (id == R.id.nav_gallery) { 

    } else if (id == R.id.nav_slideshow) { 

    } else if (id == R.id.nav_manage) { 

    } else if (id == R.id.nav_share) { 

    } else if (id == R.id.nav_send) { 

    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
}} 
+1

Пожалуйста, измените вопрос и разместить весь стек Java след. – CommonsWare

ответ

0

Пожалуйста, добавьте ошибки или результат logcat для получения более подробной информации. В то же время попробовать это в onMapready:

// enable location buttons 
     googleMap.setMyLocationEnabled(true); 
     googleMap.getUiSettings().setMyLocationButtonEnabled(true); 

     // fetch last location if any from provider - GPS. 
     final LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
     final Location loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

     if (loc == null) { 

      final LocationListener locationListener = new LocationListener() { 
        @Override 
        public void onLocationChanged(final Location location) { 

         // getting location of user 
         final double latitude = location.getLatitude(); 
         final double longitude = location.getLongitude(); 
         // do something with Latlng 
        } 

        @Override 
        public void onStatusChanged(String provider, int status, Bundle extras) { 
        } 

        @Override 
        public void onProviderEnabled(String provider) { 
         // do something 
        } 

        @Override 
        public void onProviderDisabled(String provider) { 
         // notify user "GPS or Network provider" not available 
        } 
       }; 

       locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 500, locationListener); 
       locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 500, locationListener); 
       } 
       else { 
       // do something with last know location 
       } 
0

Try, поставив

LocationManager locationmanager= (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); вне onMapReady

 Смежные вопросы

  • Нет связанных вопросов^_^