在外部类中调用Toast

时间:2015-11-08 01:55:56

标签: android toast android-toast

我有一个外部类,我想在这个类中使用Toast。 我试图实现这个但是我收到了一个错误。

如何在没有任何错误的情况下轻松完成此操作?

public class ElevenActivity extends AppCompatActivity {
  @
  Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_eleven);
  }

  public class MyToast {
    public MyToast(String message) {
      Toast.makeText(ElevenActivity.this, message, Toast.LENGTH_SHORT).show();
    }
  }
}

public class externalClass extends SQLiteOpenHelper {
  public void CreateDB() {
    ElevenActivity.MyToast t = new ElevenActivity.MyToast("Here");
  }
}

2 个答案:

答案 0 :(得分:0)

使用getApplicationContext()在外部类中创建一个Toast。像,

public class externalClass extends SQLiteOpenHelper {

   public void CreateDB() {

     Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
   }
}

答案 1 :(得分:0)

如果您想提供一个对不同的上下文(例如活动)有效的方法,请将此上下文作为参数传递。

public static void textToast(String textToDisplay, Context context)  { ... }

如果要从嵌套的内部类中调用此方法(通常就是这种情况),可以将其用作上下文

public void textToast(String textToDisplay) {
    ...
    Toast toast = Toast.makeText(OuterClass.this, text, duration);
    ...
}

(或在外部类中实现textToast并通过嵌套内部类中的OuterClass.this.textToast调用它) ..........