2011-12-28 7 views
0

ようなコードを渡す:私はメッセージを表示するには、このコードを使用していたパラメータ

Common.getHandler().post(new Runnable(){ 
    public void run(){ 
     Toast.makeText(Common.getContext(), "Text...", Toast.LENGTH_SHORT).show(); 
    } 
}); 

共通するのは、私のクラスで、getHandler()は、活動で作成されたハンドラを返します。このように私は外部活動からトーストに電話することができます。 これは良いアプローチですが、うまくいきますが、コードを少しクリーナー/短くする別の方法があるのだろうかと思います。

ような何か:

Common.run({ 
    Toast.makeText(Common.getContext(), "Text...", Toast.LENGTH_SHORT).show(); 
}); 

そして、run()メソッドは、Runnableを内側に引数として渡されたコードをカプセル化する必要があります。

AFAIKこれは閉鎖と呼ばれ、JavaScriptで可能です。

よろしくお願いいたします。

+2

Javaを待つ必要があります。8 –

答えて

2

これはJavaでできることです。オブジェクト(スカラー)を渡すことができるのは、Runnableを実装するクラスを作成するか、Runnableを実装する匿名オブジェクトインスタンスを作成することです。

0

JavaはJavaScriptではありません。

簡単にメソッドや関数を渡すことはできないので、あなたの命題は不可能です。一番上のコードでは、(あなたの一般的なクラスに適切な変更で)に単純化することができます。

Common.run(new Runnable() { 
    public void run() { 
     // your code 
    } 
} 
+0

もちろん、カスタムインターフェイスを導入したいと思いますが、最後にはできませんでした。指摘してくれてありがとう。 – LordTwaroog

0

Javaは、「スタンドアロン」クロージャを持っていません。匿名の実装を渡すことは、最も近いファクシミリです。

具体的な実装を作成して渡すことが、実際には「短く」する唯一の方法ですが、それはコールサイトでは短くて済みます。

関連する問題