【问题标题】:Invoke Toast in an external class在外部类中调用 Toast
【发布时间】:2015-11-08 01:55:55
【问题描述】:

我有一个外部课程,我想在这个课程中使用 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");
  }
}

【问题讨论】:

  • 您遇到的错误是什么?请将其添加到问题中
  • 感谢您的帮助,我通过将上下文传递给外部类解决了这个问题

标签: android toast android-toast


【解决方案1】:

只需使用 getApplicationContext() 在外部类中创建一个 Toast。喜欢,

public class externalClass extends SQLiteOpenHelper {

   public void CreateDB() {

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

【讨论】:

  • 我试过了,但我也有错误,但我已修复谢谢:)
【解决方案2】:

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

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 调用它) ..........

【讨论】:

  • 感谢分享实现此案例的另一种方法
猜你喜欢
  • 2018-02-05
  • 1970-01-01
  • 2010-11-12
  • 2014-02-10
  • 1970-01-01
  • 2013-04-26
  • 2016-12-29
  • 2012-02-21
  • 1970-01-01
相关资源
最近更新 更多