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);

NonActivityClass 内

public class NonActivityClass {

  public NonActivityClass (Context context) {

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

}

これがうまくいくことを願っています...

于 2012-07-13T08:36:54.013 に答える