第一行代码:Android(2nd ed)(47):先从看得到的入手——探究活动 2.6.1

阅读数:73 2019 年 10 月 23 日 05:05

第一行代码:Android(2nd ed)(47):先从看得到的入手——探究活动 2.6.1

(活动的最佳实践:知晓当前是在哪一个活动)

这个技巧将教会你如何根据程序当前的界面就能判断出这是哪一个活动。可能你会觉得挺纳闷的,我自己写的代码怎么会不知道这是哪一个活动呢?很不幸的是,在你真正进入到企业之后,更有可能的是接手一份别人写的代码,因为你刚进公司就正好有一个新项目启动的概率并不高。阅读别人的代码时有一个很头疼的问题,就是当你需要在某个界面上修改一些非常简单的东西时,却半天找不到这个界面对应的活动是哪一个。学会了本节的技巧之后,这对你来说就再也不是难题了。

我们还是在 ActivityTest 项目的基础上修改,首先需要新建一个BaseActivity类。右击 com.example.activitytest 包→New→Java Class,在弹出的窗口出输入 BaseActivity,如图 2.42 所示。

第一行代码:Android(2nd ed)(47):先从看得到的入手——探究活动 2.6.1

图 2.42 创建BaseActivity

注意这里BaseActivity和普通活动的创建方式并不一样,因为我们不需要让BaseActivity在 AndroidManifest.xml 中注册,所以选择创建一个普通的 Java 类就可以了。然后让BaseActivity继承自AppCompatActivity,并重写onCreate()方法,如下所示:

复制代码
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
}
}

我们在onCreate()方法中获取了当前实例的类名,并通过 Log 打印了出来。

接下来我们需要让BaseActivity成为 ActivityTest 项目中所有活动的父类。修改 FirstActivity、SecondActivity 和 ThirdActivity 的继承结构,让它们不再继承自AppCompatActivity,而是继承自BaseActivity。而由于BaseActivity又是继承自AppCompatActivity的,所以项目中所有活动的现有功能并不受影响,它们仍然完全继承了 Activity 中的所有特性。

现在重新运行程序,然后通过点击按钮分别进入到 FirstActivity、SecondActivity 和 ThirdActivity 的界面,这时观察 logcat 中的打印信息,如图 2.43 所示。

第一行代码:Android(2nd ed)(47):先从看得到的入手——探究活动 2.6.1

图 2.43 BaseActivity 中的打印日志

现在每当我们进入到一个活动的界面,该活动的类名就会被打印出来,这样我们就可以时时刻刻知晓当前界面对应的是哪一个活动了。

评论

发布