Java 如何在Android中堆叠烤面包?

Java 如何在Android中堆叠烤面包?,java,android,android-toast,Java,Android,Android Toast,一个朋友正在为学校编写一个Android应用程序,我正在帮他一点忙。有一个问题我一个小时都没能解决 他试图展示两个祝酒词,但我们无法堆叠它们,甚至无法同时展示它们。我们所看到的只是第二个祝酒词。 我们试着用比第一个更短的时间展示它,看看它是否藏在第二个后面,而不是。然后我们把第二个放在屏幕中间,但也没用。他说这只适用于他的朋友(我不能证实这一点,但也不能用谷歌搜索任何有同样问题的人) 我们完全错过了什么吗?它甚至可以同时显示两个祝酒词,还是将它们堆叠起来?使用postdayed()。展示第一个祝

一个朋友正在为学校编写一个Android应用程序,我正在帮他一点忙。有一个问题我一个小时都没能解决

他试图展示两个祝酒词,但我们无法堆叠它们,甚至无法同时展示它们。我们所看到的只是第二个祝酒词。 我们试着用比第一个更短的时间展示它,看看它是否藏在第二个后面,而不是。然后我们把第二个放在屏幕中间,但也没用。他说这只适用于他的朋友(我不能证实这一点,但也不能用谷歌搜索任何有同样问题的人)

我们完全错过了什么吗?它甚至可以同时显示两个祝酒词,还是将它们堆叠起来?

使用postdayed()。展示第一个祝酒词,之后展示第二个祝酒词:

final Handler handler = new Handler();


    handler.postDelayed(
            () -> //show the toast here,
            1200);
        handler.postDelayed(() -> //show second toast,
     2400);
          }

试试小吃吧(它们看起来也好多了!)

protectedarraylist mSnackbarList=new ArrayList();
受保护的Snackbar.Callback mCallback=new Snackbar.Callback(){
@凌驾
public void onDismissed(Snackbar Snackbar,int事件){
mSnackbarList.remove(snackbar);
如果(mSnackbarList.size()>0)
显示snackbar(mSnackbarList.get(0));
}
};
公共void addQueue(Snackbar Snackbar){
setLayoutParams(snackbar);
snackbar.setCallback(mCallback);
mSnackbarList.add(snackbar);
如果(mSnackbarList.size()==1)
显示snackbar(snackbar);
}
公共无效显示Snackbar(Snackbar Snackbar){
snackbar.show();
}

看起来是目前为止最有效的方法,太令人伤心了,他们没有使em可堆叠等。不确定他的朋友是否在撒谎:Phm看起来对学校项目来说开销太大了,不过谢谢你的贡献!你的朋友正在测试哪个Android版本?在8+中观察到
Toast
s有一些奇怪的行为。这可能是相关的。您可以让他们尝试在早期版本上进行测试。
final Handler handler = new Handler();


    handler.postDelayed(
            () -> //show the toast here,
            1200);
        handler.postDelayed(() -> //show second toast,
     2400);
          }
protected ArrayList<Snackbar> mSnackbarList = new ArrayList<>();

protected Snackbar.Callback mCallback = new Snackbar.Callback() {
    @Override
    public void onDismissed(Snackbar snackbar, int event) {
        mSnackbarList.remove(snackbar);
        if (mSnackbarList.size() > 0)
           displaySnackbar(mSnackbarList.get(0));
    }
};

public void addQueue(Snackbar snackbar){
    setLayoutParams(snackbar);
    snackbar.setCallback(mCallback);
    mSnackbarList.add(snackbar);
    if(mSnackbarList.size() == 1)
        displaySnackbar(snackbar);
}

public void displaySnackbar(Snackbar snackbar){
    snackbar.show();
}