gpt4 book ai didi

android - 在android中创建toast并指定位置

转载 作者:行者123 更新时间:2023-11-29 23:41:57 24 4
gpt4 key购买 nike

我正在开发我的第一个 Android 应用程序,我正在尝试创建一个 toast 并指定我希望它出现的位置。当我使用现在注释的代码(它没有自定义 toast 的位置)时,该应用程序在模拟器上运行完美,但现在我尝试自定义位置并使用注释下方的代码,该应用程序停止运行当我在 UI 中单击用于显示 toast 的按钮时。

你知道为什么会这样吗?因为我已经看到非常相似的代码(几乎相同)呈现为正确的,所以这应该有效。我知道这是一个非常简单的代码和一个简单的问题,但我仍然无法弄清楚我的代码有什么问题。

这是我的 onButtonClick 上的代码:

public void onClick(View V) {

// Toast.makeText(QuizActivity.this,
// R.string.correct_toast,
// Toast.LENGTH_SHORT).show();

Toast t = new Toast(QuizActivity.this);
t.setText(R.string.correct_toast);
t.setDuration(Toast.LENGTH_SHORT);
t.setGravity(Gravity.TOP|Gravity.LEFT,0,0);
t.show();

}

最佳答案

来自 https://developer.android.com/reference/android/widget/Toast#Toast(android.content.Context) :

Construct an empty Toast object. You must call setView(View) before you can call show().

您的代码崩溃是因为您现在正在使用 Toast() 构造函数。并且您需要在 show() 之前 setView(View)。虽然这对于 makeText() 不是必需的。

据我了解,makeText() 会创建一个 View ,供您从第二个参数设置文本。但是构造函数没有,setText() 方法也没有。 setText() 仅更新现有文本:

来自 https://developer.android.com/reference/android/widget/Toast#setText(int) :

Update the text in a Toast that was previously created using one of the makeText() methods.

这是一个如何做到这一点的例子:

Custom toast on Android: a simple example

编辑

在任何情况下,您都可以使用初始代码创建 Toast,而无需调用 show()

public void onClick(View V) {

Toast t = Toast.makeText(QuizActivity.this,
R.string.correct_toast,
Toast.LENGTH_SHORT);


t.setGravity(Gravity.TOP|Gravity.LEFT,0,0);
t.show();

}

编辑2

现在您已经编辑了您的代码,但您正在传递按钮 View 。

关于android - 在android中创建toast并指定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51757510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com