Activity作为Android的第一步接触的概念,在学习中将初步的认识总结下来,以便后续的回顾与反思。
1、在用Android Studio生成第一个helloworld应用程序运行在手机上时,发现继承自Activity的MainActivity生成的界面上,默认的Label是不可见的,即使在AndroidManifest文件中定义android:Label="This is FirstActivity"也无济于事。后来才发现应该是继承Activity的原因,将其改为extends AppCompatActivity即可。
2、注意XML文件中@+id/与@String这样的区别,+号表示要构建唯一的标识符,而没有+号则意味着是引用之意。
3、Intent:作为Activity中用来传递活动、信息的传递者,它有多个构造函数,并存在两种方式:显式Intent和隐式Intent:
显式Intent:
1 public void onClick(View view) { //点击按钮就会执行onClick方法 2 Intent intent = new Intent(FirstActivity.this,SecondActivity.class); 3 startActivity(intent);
Intent的两个参数用来指示出发的Activity和将要启动的Activity,并且利用startActivity的方法,将intent传入该方法,就可以进行Activity之间的切换。
隐式Intent:
隐式Intent的主要部分并非在class文件中,而在于Androidmanifest的Activity注册中:
<activity android:name=".ThirdActivity"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="http"/> </intent-filter> </activity>
注意到intent-filter中的两个参数:action和category(action只能有一个,而category则可以有多个),这些相当于ThirdActivity的一个内在特征,在代码中使用隐式intent时,就需要进行“匹配”,才会得到正确的运行方式:
public void onClick(View view) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); startActivity(intent);
Intent的这个构造方法将action作为参数,category若是default则可以不用写出,这样两者的特征得到“匹配”,就可以得到与显式intent相同的Activity切换效果。注意:若category采用自定义的方式在manifest文件中注册,那么在Intent方法中需要使用如下addCategory方法进行说明:
intent.addCategory("android.intent.category.MY_DEFAULT");
这样才能使得manifest文件与intent传递信息“匹配”成功,才能正确的启动目标Activity。