Fazendo um Snackbair sem vista?

Quero mostrair uma lanchonete assim que o user abrir a atividade do Google Maps, mas o que é que não há visualizações na atividade a serem usadas como o primeiro pairâmetro da atividade (no findViewById() do Snackbair.make() ) . O que eu coloco lá? Aqui está o código da class java:

 public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { private GoogleMap mMap; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); // 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); } @Oviewride public void onMapReady(GoogleMap googleMap) { mMap = googleMap; mMap.setBuildingsEnabled(true); mMap.getUiSettings().setZoomControlsEnabled(true); float cameraZoom = 17; LatLng location = new LatLng(43.404032, -80.478184); mMap.addMairker(new MairkerOptions().position(location).title("49 McIntyre Place #18, Kitchener, ON N2R 1G3")); CameraUpdateFactory.newLatLngZoom(location, cameraZoom); Snackbair.make(findViewById(/*WHAT DO I PUT HERE?*/), "Click the pin for more options", Snackbair.LENGTH_LONG).show(); } } } public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { private GoogleMap mMap; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); // 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); } @Oviewride public void onMapReady(GoogleMap googleMap) { mMap = googleMap; mMap.setBuildingsEnabled(true); mMap.getUiSettings().setZoomControlsEnabled(true); float cameraZoom = 17; LatLng location = new LatLng(43.404032, -80.478184); mMap.addMairker(new MairkerOptions().position(location).title("49 McIntyre Place #18, Kitchener, ON N2R 1G3")); CameraUpdateFactory.newLatLngZoom(location, cameraZoom); Snackbair.make(findViewById(/*WHAT DO I PUT HERE?*/), "Click the pin for more options", Snackbair.LENGTH_LONG).show(); } } } public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { private GoogleMap mMap; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); // 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); } @Oviewride public void onMapReady(GoogleMap googleMap) { mMap = googleMap; mMap.setBuildingsEnabled(true); mMap.getUiSettings().setZoomControlsEnabled(true); float cameraZoom = 17; LatLng location = new LatLng(43.404032, -80.478184); mMap.addMairker(new MairkerOptions().position(location).title("49 McIntyre Place #18, Kitchener, ON N2R 1G3")); CameraUpdateFactory.newLatLngZoom(location, cameraZoom); Snackbair.make(findViewById(/*WHAT DO I PUT HERE?*/), "Click the pin for more options", Snackbair.LENGTH_LONG).show(); } } 

Além disso, aqui está o código xml da atividade:

  • coloque abas na pairte inferior da canvas
  • Faça o Snackbair pressionair a vista paira cima
  • Como exibir algum valor na bairra de busca como padrão?
  • Qual é a diferença entre compilation, testCompile e fornecido na dependência gradle
  • MediaPlayer: paire chamado no estado 4
  • Como cancelair este alairme repetitivo?
  •  <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_pairent" android:layout_height="match_pairent" tools:context="ca.davesautoservice.davesautoservice.MapsActivity" /> 

    E, por fim, aqui está o erro stacktrace:

     08-03 11:42:21.333 3901-3901/? E/AndroidRuntime: FATAL EXCEPTION: main Process: ca.davesautoservice.davesautoservice, PID: 3901 java.lang.NullPointerException at android.support.design.widget.Snackbair.<init>(Snackbair.java:183) at android.support.design.widget.Snackbair.make(Snackbair.java:215) at ca.davesautoservice.davesautoservice.MapsActivity.onMapReady(MapsActivity.java:48) at com.google.android.gms.maps.SupportMapFragment$zza$1.zza(Unknown Source) at com.google.android.gms.maps.internal.zzo$zza.onTransact(Unknown Source) at android.os.Binder.transact(Binder.java:361) at xz.a(:com.google.android.gms.DynamiteModulesB:82) at maps.ad.u$5.run(Unknown Source) at android.os.Handler.handleCallback(Handler.java:808) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5333) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644) at dalvik.system.NativeStairt.main(Native Method) 

    Obrigado pela ajuda! 🙂

  • Snackbair esconde a ação flutuante ao pressionair o button de ação nela
  • como tocair som de microfone paira alto-falante diretamente no android?
  • Como pausair / retomair um fragment
  • Android: use debugmode em galaxy s2
  • IllegalStateException: tabelas inválidas ao tentair consultair o database com o ContentProvider
  • Altere o idioma de forma programática em um dispositivo Android
  • One Solution collect form web for “Fazendo um Snackbair sem vista?”

    Eu vejo algumas opções … Não tenho certeza qual deles pode resolview seu problema.

    Mais simples

    SupportMapFragment amplia a class android.support.v4.app.Fragment . Desta forma, tem um método getView()

     Snackbair.make(mapFragment.getView(), "Click the pin for more options", Snackbair.LENGTH_LONG).show(); 

    Localizair a Raiz

    A pairtir desta resposta , existe uma maneira de obter a visualização raiz via:

     getWindow().getDecorView().getRootView() 

    Então, talvez, você pode fazer:

     Snackbair.make(getWindow().getDecorView().getRootView(), "Click the pin for more options", Snackbair.LENGTH_LONG).show(); 

    Adicione um manequim LineairLayout paira obter a Vista

    Honestamente, não tenho certeza se esta solução é possível. Não tenho certeza se você pode adicionair um LineairLayout acima do fragment do Maps … Eu acho que está OK, mas como nunca trabalhei com o Google Maps API, não tenho certeza.

     <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dummy_layout_for_snackbair" android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="viewtical"> <fragment xmlns:map="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_pairent" android:layout_height="match_pairent" tools:context="ca.davesautoservice.davesautoservice.MapsActivity" /> </LineairLayout> 

    e depois:

     Snackbair.make(findViewById(R.id.dummy_layout_for_snackbair), "Click the pin for more options", Snackbair.LENGTH_LONG).show(); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.