2011-09-21 24 views
7

私が基本的にやっていることは、多くのアクティビティを持つアプリケーションです。私はアンドロイド携帯電話を持ついくつかの友人があり、私は彼らにテストのためのアプリを与えた。しかし、時には無限のサイクルに入り、プログラミング経験が不足していることや、特定の瞬間にlogcatをダンプすることができないため、理解できない奇妙な動作をすることがあります。現在実行中のメソッドの名前を取得

私がする必要があるのは、静的な常に表示されるウィンドウ、おそらくポップアップウィンドウを作成して、現在どのメソッドがプログラムであるかを示すことです。

私の質問は、この機能を実現するための最良の方法であり、アプリケーションが存在する(いくつかのスレッドを持つ)現在のメソッドを取得する方法です。

+0

あなたの質問を明確にしてください。 – user370305

+0

Androidはスレッドダンプを実行できますか?これは非常に便利なデバッグツールになるかもしれません。 –

+1

[現在実行中のメソッドの名前を取得する]の可能な複製(http://stackoverflow.com/questions/442747/getting-the-name-of-the-current-executing-method) –

答えて

7
Thread.currentThread().getStackTrace()[1].getMethodName() 
7

あなたはこれを試すことができます。

public String getCurrentMethod(){ 
    try{ 
     throw new Exception(""); 
    }catch(Exception e){ 
     return e.getStackTrace()[0].toString(); 
    } 
    return ""; // This never happens 
} 

それはこのようなものが返されます:あなたはSO検索した場合、このために多くの答えがあります
ClassName.methodName():123

+6

注:あなたはstacktraceを取得するには 'Exception'をスローする必要があります:' new Exception()。getStackTrace()[0] 'はうまく動作するはずです。もちろん、 –

+0

。これはコンパイルせずにコーディングするためのものです: –

6

を。これは簡単な方法です

String name = new Object(){}.getClass().getEnclosingMethod().getName(); 

この投稿を参照する必要があります。私のデバイス上で Getting the name of the current executing method

+0

それぞれの使用は新しい匿名クラス定義を作成することに注意してください。 –

2

それはだ - Thread.currentThread().getStackTrace()[2].getMethodName()

(いない[1]が、[2])

+0

他の質問と私の答えを確認します。stackoverflow.com/a/8592871/658826 - これはあなたにインデックスが何であれ、正しいメソッド名を与えます。 – virgo47

関連する問題