我正在尝试创建一个从该方法中返回方法名称的函数:
  public static String getMethodName(final int depth)
  {
    final StackTraceElement[] ste = Thread.currentThread().getStackTrace();
    return ste[ste.length - 1 - depth].getMethodName();
  }然而,当我从Activity.onCreate()调用这个方法时,它返回"main“而不是"onCreate”。
如何从该方法中获取实际的方法名称?
发布于 2011-04-06 02:58:15
return ste[1+depth].getMethodName();如果你像上面那样改变返回语句,你会得到直接调用方法名,过程深度应该是零..
发布于 2011-04-06 03:15:10
尽管启动异常的方式代价更高,但我还是会这么做。
Log.d("CurrentMethod", new Exception().getStackTrace()[0].getMethodName());如果在onCreate中调用,则有效。
发布于 2012-09-05 20:48:25
管理日志的单例:
public class ActiveLog {
public static final String TAG = "TRACE LOG";
private static ActiveLog instance;
private static boolean actif;
public static ActiveLog getInstance() {
    if (null == instance) 
        instance = new ActiveLog();
    return instance;
}
private ActiveLog() {
    ActiveLog.setActif(true);
}
public void log() {
    if(isActif())
        Log.d(TAG, "" + (new Exception().getStackTrace()[1].getClassName())
                      + ": "
                      + (new Exception().getStackTrace()[1].getMethodName()));
}
public static boolean isActif() {
    return actif;
}
public static void setActif(boolean actif) {
    ActiveLog.actif = actif;
}}下面是一个使用示例:
public class MyTest {
  public void test() {
    ActiveLog.getInstance().log();
  }
}结果是:
09-05 14:37:09.822: D/TRACE LOG(XXXX): com.TestProject.MyTest: testhttps://stackoverflow.com/questions/5556834
复制相似问题