Java 允许从其他类访问toast
我想用另一个班级的祝酒词 在第1课中,我有toast方法:Java 允许从其他类访问toast,java,android,Java,Android,我想用另一个班级的祝酒词 在第1课中,我有toast方法: public static void textToast(String textToDisplay) { Context context = getApplicationContext(); CharSequence text = textToDisplay; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context
public static void textToast(String textToDisplay)
{
Context context = getApplicationContext();
CharSequence text = textToDisplay;
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER, 50, 50);
toast.show();
}
我试图从另一个类调用此toast,但当我将该方法设置为静态时,它表示无法对此方法进行静态引用。getApplicationContext()
我使用class2.textToast(“”)访问它代码>
如果您对此有任何建议,我们将不胜感激。谢谢如果您想提供一种对不同上下文(如活动)有效的方法,请将此上下文作为参数传递
public static void textToast(String textToDisplay, Context context) { ... }
如果要从嵌套的内部类调用此方法(通常是这样),可以使用this
作为上下文
public void textToast(String textToDisplay) {
...
Toast toast = Toast.makeText(OuterClass.this, text, duration);
...
}
(或者在外部类中实现textToast
,并通过嵌套内部类中的OuterClass.this.textToast
调用它)谢谢您的帮助,但它似乎也不起作用。另一个类不是活动,也不是嵌套的。它只是一个包含主活动逻辑的简单类。当我在参数中放入上下文时,这不允许我使用在主活动中显示为字符串的textToast(“”)。谢谢您需要一个上下文来显示祝酒词。因此,无论您想在何处调用方法,都必须提供一个上下文——通常是活动的上下文。通过您的活动,您可以调用WhatEverClass.textToast(“,this)
。。。如果你想从非上下文中调用你的方法,唯一的方法就是在使用方法之前定义一个上下文…好的,谢谢,在这个活动的主类中,它与这个一起工作。在这个简单的类中,我创建了一个带有context的新方法,当我放置(“,this)时,它说这不能在静态上下文中使用,还有什么可以替代它的吗?这是一个完美的解决方案
public void FlesmynToast(Activity fActivity, String fMessage) {
LayoutInflater fInflater = fActivity.getLayoutInflater();
View fView = fInflater.inflate(R.layout.custom_toast (ViewGroup) fActivity.findViewById(R.id.custom_toast_layout_id));
ImageView image = (ImageView) fView.findViewById(R.id.image);
image.setImageResource(R.drawable.ic_launcher);
TextView fText = (TextView) fView.findViewById(R.id.text);
fText.setText(fMessage);
// Toast...
Toast fToast = new Toast(fActivity.getApplicationContext());
fToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
fToast.setDuration(Toast.LENGTH_LONG);
fToast.setView(fView);
fToast.show();
}