13

可能重复:
我如何从非活动课程中祝酒?

如何Toast从不扩展Activity类的类中创建和显示消息?我在另一个由Activity.

4

2 回答 2

17

您需要上下文参考。只要有一个辅助方法,比如

  public static void showToastMethod(Context context) {
        Toast.makeText(context, "mymessage ", Toast.LENGTH_SHORT).show();
  }
于 2012-07-13T08:33:26.547 回答
5

---------------------- 新的模块化版本 ------------------------

创建接口

 public interface ShowToast {
      public onShowToast (String message); [additionally you can pass toast duration]
}

在Activity类中,实现该接口并编写Toast方法来显示消息。

public class ActivityClass extends Activity implements ShowToast{

  public giveCallToNonActivityClass(){
     new NonActivityClass(this); //Here we're passing interface impl reference.
  }

  public onShowToast (String message) {
        Toast.makeText(ActivityClass.this, message, Toast.LENGTH_SHORT).show();
  }
}

示例 NonActivityClass 将如下所示:

public class NonActivityClass {

  public NonActivityClass (ShowToast interfaceImpl) {
       interfaceImpl.onShowToast("I'm calling Toast from Non Activity ");
  }
}

早期版本太旧,无法参考。希望这种更模块化的方法有所帮助。

-------------------------------- 旧版本 2012 --------------- -------------

您可以通过将值传递给 nonActivity 类将该活动的上下文传递给您的类

例子:

new NonActivityClass(Activityclass.this) ;

和上面的答案一样

new MyClass(ActivityClass.this);

在非活动类中

public class NonActivityClass {

  public NonActivityClass (Context context) {

        Toast.makeText(context, "mymessage ", Toast.LENGTH_SHORT).show();
  }

}

希望这对你有用...

于 2012-07-13T08:36:54.013 回答