Я начинаю изучать, как работать с Android Studio, и я застреваю, когда пытаюсь реализовать карты Google.
У меня есть этот код, но я не знаю, почему мой .getTag()
не работает, я должен что-то реализовать?Буду признателен за любую помощь.
Мой Home.java, где я могу перейти к другим фрагментам:
import android.support.design.widget.BottomNavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Gravity;
import com.example.flow.displayClasses.BalansScreens.BalansFragment;
import com.example.flow.displayClasses.GroupScreens.GroupsFragment;
import com.example.flow.displayClasses.LendGoodsScreens.LendGoodsFragment;
import com.example.flow.displayClasses.WebscrapingScreens.GoogleMapsFragment;
import com.example.flow.displayClasses.ContactUsScreen.ContactUsFragment;
import com.example.flow.displayClasses.NightmodeScreen.NightmodeFragment;
import com.example.flow.displayClasses.SettingsScreen.SettingsFragment;
import com.example.flow.displayClasses.FriendsScreen.FriendsFragment;
import com.example.flow.displayClasses.TermsAndConditionsScreen.TermsFragment;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import android.support.design.widget.NavigationView;
import android.support.v4.app.FragmentManager;
import android.support.v7.widget.Toolbar;
import android.widget.Toast;
public class Home extends AppCompatActivity
implements
NavigationView.OnNavigationItemSelectedListener,
TermsFragment.OnFragmentInteractionListener,
SettingsFragment.OnFragmentInteractionListener,
ContactUsFragment.OnFragmentInteractionListener,
NightmodeFragment.OnFragmentInteractionListener,
BottomNavigationView.OnNavigationItemSelectedListener,
{
DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bottom_navigation);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
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.addDrawerListener(toggle);
toggle.syncState();
toggle.setDrawerIndicatorEnabled(false);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
FriendsFragment friendsFragment = new FriendsFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(
R.id.relativelayout_for_fragment,
friendsFragment,
friendsFragment.getTag()
).commit();
BottomNavigationView bottomNavigationView = (BottomNavigationView)findViewById(R.id.main_nav);
bottomNavigationView.setOnNavigationItemSelectedListener(this);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.END)) {
drawer.closeDrawer(GravityCompat.END);
} 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.menu_drawer, 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.menuRight) {
if (drawer.isDrawerOpen(Gravity.RIGHT)) {
drawer.closeDrawer(Gravity.RIGHT);
} else {
drawer.openDrawer(Gravity.RIGHT);
}
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_friends) {
FriendsFragment cameraFragment = FriendsFragment.newInstance("some1", "some2");
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out)
.replace(R.id.relativelayout_for_fragment,
cameraFragment,
cameraFragment.getTag()
).commit();
} else if (id == R.id.nav_settings) {
SettingsFragment settingsFragment = new SettingsFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out)
.replace(R.id.relativelayout_for_fragment,
settingsFragment,
settingsFragment.getTag()
).commit();
} else if (id == R.id.nav_nightmode) {
NightmodeFragment nightmodeFragment = new NightmodeFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out)
.replace(R.id.relativelayout_for_fragment,
nightmodeFragment,
nightmodeFragment.getTag()
).commit();
} else if (id == R.id.nav_contact) {
ContactUsFragment contactUsFragment = new ContactUsFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out)
.replace(R.id.relativelayout_for_fragment,
contactUsFragment,
contactUsFragment.getTag()
).commit();
} else if (id == R.id.nav_termsandconditions) {
TermsFragment blankFragment = new TermsFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out)
.replace(R.id.relativelayout_for_fragment,
blankFragment,
blankFragment.getTag()
).commit();
}
else if (id == R.id.nav_balans) {
BalansFragment balansFragment = new BalansFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out)
.replace(R.id.relativelayout_for_fragment,
balansFragment,
balansFragment.getTag()
).commit();
}
else if (id == R.id.nav_review) {
GoogleMapsFragment reviewFragment = new GoogleMapsFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out)
.replace(R.id.relativelayout_for_fragment,
reviewFragment, reviewFragment.getTag()
).commit();
}
else if (id == R.id.nav_goods) {
LendGoodsFragment lendGoodsFragment = new LendGoodsFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out)
.replace(R.id.relativelayout_for_fragment,
lendGoodsFragment,
lendGoodsFragment.getTag()
).commit();
}
else if (id == R.id.nav_groups) {
GroupsFragment groupsFragment = new GroupsFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out)
.replace(R.id.relativelayout_for_fragment,
groupsFragment,
groupsFragment.getTag()
).commit();
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.END);
return true;
}
@Override
public void onFragmentInteraction(String data) {
Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
}
@Override
public void onPointerCaptureChanged(boolean hasCapture) {
}
}
Мой фрагмент, где я хочу использовать карты Google:
package com.example.flow.displayClasses.WebscrapingScreens;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.flow.R;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
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.MarkerOptions;
public class GoogleMapsFragment extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_mapsgoogle);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
/**
* Manipulates the map once available.
* This callback is triggered when the map is ready to be used.
* This is where we can add markers or lines, add listeners or move the camera. In this case,
* we just add a marker near Sydney, Australia.
* If Google Play services is not installed on the device, the user will be prompted to install
* it inside the SupportMapFragment. This method will only be triggered once the user has
* installed Google Play services and returned to the app.
*/
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
// public GoogleMapsFragment() {
// Required empty public constructor
//}
/*
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_googleMaps, container, false);
}*/
}
Мы используем фрагменты, потому что нам нужна панель навигации внизу, но мне было интересно, есть ли более простой способ.Это тот вид, который у нас есть в настоящее время и который мы хотим, но мы используем фрагменты, это правильный путь?
внешний вид нашего приложения в настоящее время