本文你将获得的东西(注:适用于接手别人的项目—而且是那种舍不得写注释的):
1,在不熟悉别人代码的情况下,根据页面获取当前类。
2,根据点击屏幕的组件,获取类名,行号
第一步,新建MyApplication
public class MyApplication extends Application {
@Override
public void onCreate(){
super.onCreate();
this.registerActivityLifeCycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityStopped(Activity activity) {
Log.i("info", "当前类名"+activity.getClass().getSimpleName());
}
@Override
public void onActivityStarted(Activity activity) {
Log.i("info", "当前类名"+activity.getClass().getSimpleName());
}
@Override
public void onActivitySaveInstanceState(Activity activity,
Bundle outState) {
Log.i("info", "当前类名"+activity.getClass().getSimpleName());
}
@Override
public void onActivityResumed(Activity activity) {
Log.i("info", "当前类名"+activity.getClass().getSimpleName());
}
@Override
public void onActivityPaused(Activity activity) {
Log.i("info", "当前类名"+activity.getClass().getSimpleName());
}
@Override
public void onActivityDestroyed(Activity activity) {
Log.i("info", "当前类名"+activity.getClass().getSimpleName());
}
@Override
public void onActivityCreated(Activity activity,
Bundle savedInstanceState) {
Log.i("info", "当前类名"+activity.getClass().getSimpleName());
}
});
}
}
第二步,在Manifest中添加MyApplication
在AndroidManifest中的< application >标签中添加以下属性:
android:name="com.example.currentclass.MyApplication"
最后,在运行代码的时候,就可以打印出当前的类名。
第三步,写BaseActivity,让定位的Activity继承
在BaseActivity中重写onClick(View view)方法
@Override
public void onClick(View v) {
StackTraceElement element = Thread.currentThread().getStackTrace()[3];
Log.i("info", "类名:" + element.getClassName());
Log.i("info", "文件名:" + element.getFileName());
Log.i("info", "行号:" + element.getLineNumber());
Log.i("info", "方法名:" + element.getMethodName());
element = null;
}
之后,让Activity继承BaseActivity,并在Activity的onClick(View view)方法中添加super.onClick(v),这样,就很容易找到该组件调用的行号了。