我有一个名为MyPrimaryClass的类,这个类在按下时有一个按钮,用类myClassForResult创建一个Intent。
我用它来启动它:
startActivityForResult(myIntentOfMyClassForResult, ACTIVITY_EDIT_BTEXT);
MyPrimaryClass和myClassForResult都扩展了Activity。
所以,当我在myClassForResult中使用文本参数R.string.my_resource_string调用Toast.makeText时,它会让我强制关闭!
我试过这个:
Context c = myClassForResult.this;
Toast toast = Toast.makeText(c,
c.getResources().getString(R.string.my_resource_string),
Toast.LENGTH_SHORT);
toast.show();
此外: c = getApplicationContext()
此外: c = getBaseContext()
还有:
Context c = MyPrimaryClass.this;
Toast toast = Toast.makeText(c,
R.string.my_resource_string,
Toast.LENGTH_SHORT);
toast.show();
如果我使用内联字符串,例如“My Toast Text!”,它可以正常工作。但我需要从资源中获取一个字符串。
- 问题解决了:
要解决此问题,我将Toast的持续时间更改为Toast.LENGTH_LONG
字符串 R.string.my_resource_string 值为“标题为空”
当我将其值更改为“标题”时,它工作正常,所以我猜这个字符串对于Toast.LENGTH_SHORT持续时间来说太长了。
但是当我将持续时间更改为 Toast.LENGTH_LONG 时,我可以使用长字符串。
Context c = MyPrimaryClass.this;
Toast toast = Toast.makeText(c,
R.string.my_resource_string,
Toast.LENGTH_LONG);
toast.show();
答案 0 :(得分:3)
尝试:
Toast.makeText(this, this.getString(R.string.my_resource_string), Toast.LENGTH_SHORT);
答案 1 :(得分:2)
有一点需要注意:
Toast toast = Toast.makeText(c,
c.getResources().getString(R.string.my_resource_string),
Toast.LENGTH_SHORT);
toast.show();
可以简化为:
Toast.makeText(c,
c.getResources().getString(R.string.my_resource_string),
Toast.LENGTH_SHORT).show();
这样可以节省您不需要的对象引用。
您需要了解的一件事是,无论何时您在包中引用R(而不是android.R。),只要您拥有上下文,您就可以访问您的资源。
<强>更新强>
在意识到你正在使用它之后,我会推荐你 改变你的方法,虽然这实际上是可行的,但你的方法对于这么简单的事情并不理想。
方法startActivityForResult(xx)通常是在您希望启动包外的应用程序以获取结果时。
例如:如果我想从产品中检索条形码,那么我会通过动作启动对该条形码类的Intent,间接。然后我通过使用onActivityResult(xx)检索数据。
使 No Sense 为您自己的课程执行此操作。
答案 2 :(得分:2)
@dilipkaklotar已正确回答但需要进行一些更改:
这是我的工作方式
Toast.makeText(getApplicationContext(),
getApplicationContext().getResources().getString(R.string.message),
Toast.LENGTH_SHORT).show();
getResources没有括号()。 最后是.show();不要显示()。
但这是正确的。非常感谢你。
答案 3 :(得分:0)
Toast.makeText(getApplicationContext(), getApplicationContext().getResources.getString(R.string.imgval), Toast.LENGTH_SHORT).toShow();