2015-12-27 19 views
5

Używam aktywności podstawowej dla wszystkich innych działań.Pasek wyskoku nie jest wyświetlany

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 nie jest wyświetlany, gdy próbował dostępem z klasy non-aktywności.

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

wewnątrz 'build.gradle' masz' kompilacji „com.android.support: Wykonanie: 22.2.0'' – Tauqir

+0

spróbować Snackbar Snackbar = Snackbar .Dokonać (findViewById (R.id. coordinatorLayout1), "Helooo ....", Snackbar.LENGTH_LONG); snackbar.show(); – Shishram

+0

"com.android.support:design:22.2.0" to już było w build.gradle. – user1382802

Odpowiedz

13

Zrób public metodę w Util class i nie sprawiają, że cordinatorLayout jak public static. Zachowaj instancję weakReference instancji Activity's, a za jej pomocą można wyświetlić kod SnackBar. Metoda podana poniżej.

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

Przekazałem kontekst aplikacji do showSnackBar(), Wyświetl kontekst rootView = ((Aktywność)) .getWindow(). GetDecorView(). FindViewByIdfindViewById (android.R. id.content) ;, brak błędu, ale nie wykonuje Snackbar.make (rootView, tekst, czas trwania) .show(); – user1382802

+0

Przekaż instancję aktywności –

+0

Dzięki @zeus, zdałem instancję bieżącej aktywności i zadziałało. – 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(); 
} 
Powiązane problemy