首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >活动重新创建前未显示Android SnackBar

活动重新创建前未显示Android SnackBar
EN

Stack Overflow用户
提问于 2020-10-25 22:59:50
回答 2查看 75关注 0票数 0

在我的android应用程序中,我有一个按钮,可以改变语言。

单击该按钮后,将重新创建该活动以应用语言更改。

我需要通过SnackBar向用户显示一条消息,即语言已更改。

到目前为止,我使用的是Toast,它工作得很好,但从Android11开始,不推荐使用自定义的Toast视图,而是推荐使用SnackBars。

但是,SnackBar不会持久存在,因此不会显示它,因为活动是立即重新创建的。

代码语言:javascript
运行
复制
    public void ClickLang(View view)
{
    String lng = readLang();
    String tx;String newlng;

    ImageView language = findViewById(R.id.lang);
    if (lng.equals("sk")) {
        language.setImageResource(R.drawable.sk);
        newlng = "en"; tx="English language";
    }
    else {
        language.setImageResource(R.drawable.en);
        newlng = "sk"; tx="Slovenský jazyk";

   }

    showMsgSnack(tx);
    saveLang(newlng);

}

public void showMsgSnack(String msg) {
    View parentLayout = findViewById(android.R.id.content);
    Snackbar snackbar = Snackbar.make(parentLayout, msg, Snackbar.LENGTH_SHORT);
    snackbar.show();
}

private void saveLang(String lng) {
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    sharedPreferences.edit().putString("hrad_lang", lng).apply();

    super.recreate();
}

如果我删除super.recreate();,SnackBar就会出现,但lang不会改变,所以我需要它。

有没有一个解决方案,如何在重新创建之前显示SnackBar?

EN

Stack Overflow用户

发布于 2020-10-26 03:23:26

多亏了@Manuel Mato,onSaveInstanceState似乎可以工作了:

代码语言:javascript
运行
复制
 protected void onSaveInstanceState( @NonNull Bundle texto) {
        super.onSaveInstanceState(texto);
        String lng = readLang();
        texto.putString("showlng", lng);
    }

在onCreate中:

代码语言:javascript
运行
复制
 @Override
    protected void onCreate(Bundle texto) {
        super.onCreate(texto);
        if (texto != null){String tx;
            String tt = texto.getString("showlng");
            assert tt != null;
            if (tt.equals("sk")) { tx = "Slovenský jazyk";} else { tx = "English language";}
            showMsgSnack(tx);
        }
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64525163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档