在外部类中敬酒 - Android

时间:2014-11-20 17:15:44

标签: android toast

我开始使用AndroidStudio,我想在我的外部主要活动类中使用toast:

在外部课程中我有这个方法:

 private void call_toast(){
     Toast.makeText(MainActivity, "Task Finalize!", Toast.LENGTH_SHORT).show();
 }

这是我的想法,但在“MainActivity”中给我错误。如何通过外部课程在我的实际活动中展示吐司?提前致谢,对不起我的英语!

PD1:如果您需要更多信息或代码建议我!

3 个答案:

答案 0 :(得分:2)

你有几个选择。

  1. 将上下文传递给call_toast,即:

    public void call_toast(Context context){}
    
  2. 并在活动中致电:

    call_toast(SomeActivity.this);
    
    1. 致电getApplicationContext()您需要参加活动的地方。
    2. 希望这有助于您入门。

答案 1 :(得分:2)

显示toast需要在主UI线程中完成。以下代码是一个静态方法的示例,可以从任何线程执行(当您的应用程序甚至不在前台时,包括后台服务)。

public class ServiceUtils {
  //-------------------------------------------------------------------------
  // Constructor

  // All methods in this class are static, no need for a public constructor
  private ServiceUtils() {} 

  private static final Handler s_toastHandler = new Handler(Looper.getMainLooper());


  public static void notifyUI(final Context context, final String toastMsg) {   
      s_toastHandler.post(new Runnable() {
          public void run() {
              try {
                  Toast.makeText(context, 
                                 toastMsg, 
                                 Toast.LENGTH_SHORT).show();
              }
              catch(Exception ex) {
                Log.e(ServiceUtils.class.getSimpleName(), ex.getMessage());
              }
          }
      });
   }
 }

现在你可以随时随地打电话了:

ServiceUtils.notifyUI(getApplicationContext(), "some toast message")

答案 2 :(得分:1)

尝试

Toast.makeText(getApplicationContext(), "Task Finalize!", Toast.LENGTH_SHORT).show();