11

私はBaseActivity他のすべての活動を継承しています。

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

<?xml version="1.0" encoding="utf-8"?>

<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 snackbar = Snackbar.make(
        BaseActivity.coordinatorLayout,
        "Helooo....",
        Snackbar.LENGTH_LONG
);
4

2 に答える 2

20

publicメソッドを aUtil classに作成し、cordinatorLayoutasを作成しないでくださいpublic staticweakReferenceインスタンスのを保持し、Activity'sそれを通して を表示できますSnackBar。以下に示す方法。

public void showSnackBar(Activity activity, String message){
    View rootView = activity.getWindow().getDecorView().findViewById(android.R.id.content);
    Snackbar.make(rootView, message, duration).show();
}
于 2015-12-27T05:55:41.900 に答える
2
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();
}
于 2016-03-16T07:26:36.040 に答える