【发布时间】:2021-09-11 15:43:19
【问题描述】:
我想在单击按钮时添加一个“祝酒消息”,然后我添加了它。现在我只想显示它**一次**,这意味着如果在第一次之后点击按钮**以及重新启动应用程序**之后,toast 消息将**不会再次显示**。
请帮我!
【问题讨论】:
标签: java android android-studio toast android-toast
【问题讨论】:
标签: java android android-studio toast android-toast
您可以使用存储在另一个类中的 SharedPreferences 来做到这一点,例如 Utility.java:
public class Utility {
public static SharedPreferences preferences(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context);
}
public static Boolean hasSendToast(Context context) {
return preferences(context).getBoolean("Toast", false);
}
public static void setSendToast(Context context, Boolean bool) {
preferences(context).edit()
.putBoolean("Toast", bool).apply();
}
}
然后将它与Toast 中的onClickListener 一起使用,就像这样:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> {
if (!Utility.hasSendToast(getApplicationContext())) {
Toast.makeText(getApplicationContext(), "My Toast", Toast.LENGTH_SHORT)
.show();
Utility.setSendToast(getApplicationContext(), true);
}
});
}
}
【讨论】:
setOnClickListener 和一个意图。然后更改了 toast 消息,但 toast 消息仍然显示没有停止。
您可能想查看https://developer.android.com/training/data-storage/shared-preferences。第一次单击后,将布尔值写入共享首选项以指示第一次单击已发生。下次用户单击该按钮时,请确保检查该布尔值是否已设置,如果是,则不要显示 toast。
【讨论】:
您可以使用布尔标志并使用共享首选项存储值。
btn.onClickListener {
if(!getToastShownStatusFromSharedPreference()) {
showToast()
changeToastShowsStatusToSharedPreference()
}
/* other operations */
}
【讨论】:
/* other operations */之外,我是否需要在Toast.makeText之类的行中添加一些内容
Toast.makeText(context, toastMessage, Toast.LENGTH_SHORT).show()
是的,您可以使用 SharedPreferences 来做到这一点,它是 android 中的首选项管理器。您可以按照以下流程进行:
isFirstTime = true。isFirstTime = false。就是这样。
【讨论】: