class MyClass(private val context: Context) {
fun A() {
// 呼び出し元のFragmentクラス名とメソッド名を取得
val callerInfo = getCallerFragmentInfo()
// トーストに呼び出し元の情報を表示
Toast.makeText(context, "Called from: $callerInfo", Toast.LENGTH_SHORT).show()
}
// スタックトレースからFragmentを探し、最初に見つけたクラス名とメソッド名を返す
private fun getCallerFragmentInfo(): String {
val stackTrace = Thread.currentThread().stackTrace
for (element in stackTrace) {
val className = element.className
try {
val cls = Class.forName(className)
if (androidx.fragment.app.Fragment::class.java.isAssignableFrom(cls)) {
val methodName = element.methodName
return "Class: ${className.substringAfterLast(".")}, Method: $methodName"
}
} catch (e: ClassNotFoundException) {
e.printStackTrace()
}
}
return "No Fragment Found"
}
}