我尝试创建Base类,它将为每个扩展它的Activity
创建一个TAG字符串。
所以我首先创建了一个abstract
类
public abstract class First extends Activity {
static protected String TAG;
protected void setTag(Activity activity) {
TAG = activity.getClass().getSimpleName();
}
}
然后我创建了基类
public class BaseActivity extends First {
@Override
protected void setTag(Activity activity) {
super.setTag(activity);
}
}
但是,我现在如何设置扩展ACtivity
的每个BaseActivity
都使用自己的简单名称设置TAG变量,而不是BaseActivity
简单名称?
答案 0 :(得分:3)
如果我理解你想做什么,这就是你需要的:
public class SubActivity extends BaseActivity {
@Override
protected void setTag(Activity activity) {
super.setTag(this);
}
}
但是,在您的代码中存在一个很大的可能问题,您的抽象类将TAG声明为静态,因此调用方法setTag的任何新活动都将修改TAG的值" First&#34 ; class,这不是你想要的,你可能想要保持虚拟"非静态"所以创建的每个对象都将使用每个SubActivity中指定的类的正确名称保留自己的TAG版本...
问候!
答案 1 :(得分:2)
覆盖onCreate(Bundle savedInstanceState)
,这是一种您将始终致电的方法,并且会执行TAG = this.getClass().getSimpleName();
类似
public abstract class First extends Activity {
protected String TAG;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TAG = this.getClass().getSimpleName();
}
}
然后
public class BaseActivity extends First {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//continue normally here, you won't even have to remember to call the method
}
}