2015-12-27 20 views
5

Sto utilizzando un'attività di base per tutte le altre attività.Barra di snack non visualizzata

public class BaseActivity extends AppCompatActivity { 

    public static CoordinatorLayout coordinatorLayout; 

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

     coordinatorLayout = (CoordinatorLayout) findViewById(R.id 
       .coordinatorLayout1); 
    } 
} 

activity_base.xml

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/coordinatorLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="com.example.Activity.BaseActivity"></android.support.design.widget.CoordinatorLayout> 

Snackbar non viene visualizzato quando tentato di accedere da una classe non-attività.

Snackbar snackbar = Snackbar 
          .make(BaseActivity.coordinatorLayout, "Helooo....", Snackbar.LENGTH_LONG); 
snackbar.show(); 
+0

all'interno 'build.gradle' Possiedi' compilare 'com.android.support: Design: 22.2.0'' – Tauqir

+0

provare Snackbar snack = Snackbar .make (findViewById (R.id. coordinatorLayout1), "Helooo ....", Snackbar.LENGTH_LONG); snackbar.show(); – Shishram

+0

"com.android.support:design:22.2.0" questo era già presente in build.gradle. – user1382802

risposta

13

Fai un metodo di public in un Util class e non effettuano il cordinatorLayout come public static. Conserva il weakReference dell'istanza Activity's e tramite il quale è possibile visualizzare lo SnackBar. Metodo indicato di seguito.

public void showSnackBar(Activity activity, String message){ 
    View rootView = activity.getWindow().getDecorView().findViewById(android.R.id.content); 
    Snackbar.make(rootView, message, duration).show(); 
} 
+0

Ho passato il contesto dell'app a showSnackBar(), View rootView = ((Activity) context) .getWindow(). GetDecorView(). FindViewByIdfindViewById (android.R. id.content) ;, nessun errore ma non esegue Snackbar.make (rootView, text, duration) .show(); – user1382802

+0

Passa l'istanza dell'attività –

+0

Grazie a @zeus, ho passato l'istanza dell'attività corrente e ha funzionato. – user1382802

1
private static final String message = "No Internet Connection"; 

public static void message(Activity activity) { 
    View rootView = activity.getWindow().getDecorView().findViewById(android.R.id.content); 
    Snackbar.make(rootView, message, Snackbar.LENGTH_LONG).show(); 
} 
Problemi correlati