2011-10-26 4 views
0

私はどのように私の機能を呼び出すのですか?明らかにコール静的void

public static void dial(Activity call) 
{ 
    Intent intent = new Intent(Intent.ACTION_DIAL); 
    call.startActivity(intent); 
} 

ない:

dial(); /*Something should be within the brackets*/ 
+0

'this'を引数として渡してみてください(あなたがアクティビティから始めれば提供してください) –

+0

dial(this);働くアナキンのように言った:ITS WORKING! – Patrick

答えて

0

nullを渡すことはできません。コンテキストオブジェクトを送信する必要があります。

あなたの機能はどこにありますか?アクティビティなどの内部にある場合は、パラメータとして「this」を渡します。

BroadcastListenerまたはサービス内にある場合は、パラメータをContextに変更して「this」を渡すだけです。

+0

魅力的な作品! – Patrick

+0

別のクラスから呼び出すとどうなりますか?この関数を持つクラスの名前はActionです。私はこれを行うことはできません知っている:Action.dial(this); – Patrick

+0

@Patrickよくコンテキストを渡すのはかなり一般的です。ユーティリティクラスを呼び出します。しかし、常にあなたはActivityまたはBroadcastListenerまたはServiceからロジックを実行し始めます。これらはすべてContextサブクラスであるため、常に作業する必要があります。 – Emmanuel

2

あなたは、その理由は、静的メソッドではなく、それの個々のインスタンスに、クラス自身が属していることである
ClassName.dial();

を試してみてください。 instance.dial()への呼び出しは合法ですが、お勧めしません。

+0

"Activity call"のためClassName.dial()が動作しません IveはClassName.dial(null)とClassName.dial(call)を試しました。 – Patrick

+0

@Patrickと何の問題がありますか?通常、両方のアプローチは少なくともコンパイルする必要があります。 "null"の呼び出しはNullPtrExceptionをスローします – kostja

+0

どちらもコンパイルできますが、アプリケーションを実行すると強制終了します。D – Patrick

1

あなたは何exacltyクラスの静的メソッドを呼び出す

0

....あなたClassName.StaticMethodを使用する必要がありますが問題ありますか?

あなたが持っていれば完全に(あなたは常にClassname.FctNameで静的関数を呼び出す必要がある場合でも、

public class Test { 
    public void nonStaticFct() { 
     staticFct(); 
    } 

    public static void staticFct() { 
     //do something 
    } 
} 

作品のようなクラス(Test.staticFct()

私はここでの問題が欠落している引数であると思います

[編集]明らかに私は間違っています。Java Code Conventionsによれば、暗黙のthis.staticFct()が期待されるので、classnameを使わずにClassmethodを呼び出すことで、 - でもJavaコンパイラは十分にスマートです)

関連する問題