私がsnackbarを複数回呼び出すと、最後のsnackbar項目だけが表示されます。Snackbar isQueued()はいつ使用されますか? (snackbarをキューに入れる方法)
以下のコードでは、項目3のみが表示されます。項目1のために(?とゼロに設定)Snackbar.LENGTH_LONGは無視されているようですし、2
Snackbar.make(view, "Item 1", Snackbar.LENGTH_LONG).show();
Snackbar.make(view, "Item 2", Snackbar.LENGTH_LONG).show();
Snackbar.make(view, "Item 3", Snackbar.LENGTH_LONG).show();
まだgoogle documentsに、私はメッセージをキューすることが可能であることがわかります。
public boolean isShownOrQueued() Returns whether this Snackbar is currently being shown, or is queued to be shown next.
ので、どのように、私たちは実際にスナックバーをキューに入れるのですか?
//using a queue to pass string to the snackbar
Queue<String> myQueue = new LinkedList<String>();
myQueue.offer("item 1");
myQueue.offer("item 2");
myQueue.offer("item 3");
displaysnack(myQueue, view);
public void displaysnack(final Queue dQueue, final View view){
Snackbar.make(view, (String)dQueue.poll(), Snackbar.LENGTH_LONG).setCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
switch (event) {
case Snackbar.Callback.DISMISS_EVENT_ACTION:
Toast.makeText(getApplicationContext(), "Clicked the action", Toast.LENGTH_LONG).show();
break;
//once the timeout expires, display the next one in the queue.
case Snackbar.Callback.DISMISS_EVENT_TIMEOUT:
Toast.makeText(getApplicationContext(), "Showing: "+ (dQueue.size()), Toast.LENGTH_SHORT).show();
if (dQueue.size()>0){displaysnack(dQueue, view);}
break;
case Snackbar.Callback.DISMISS_EVENT_CONSECUTIVE:
//Toast.makeText(getApplicationContext(), "Multiple Shown", Toast.LENGTH_SHORT).show();
break;
}
}
このメソッドは、最新のサポートライブラリ(23.1.0)http://developer.android.com/sdk/support_api_diff/23.1.0/changes/android.supportに追加されました。 design.widget.Snackbar.html –
誰かが 'isShownOrQueued()'の使用方法を知りましたか? –