《第一行代码》学习笔记
一、探究活动
- 手动创建活动,不勾选 Generate Layout File 和 Launcher Activity
- 重写
onCreate()
方法(每个活动都应该重写)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
- 新建 layout 布局,并在活动中加载布局
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 加载布局
setContentView(R.layout.first_layout);
}
- 在
AndroidManifest.xml
文件中注册
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".FirstActivity"></activity>
</application>
注:活动注册声明
<activity>
标签要放在<application>
标签内
- 配置主活动
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--android:label显示的内容,既是标题栏内容,也是启动器中应用程序的名称-->
<activity android:name=".FirstActivity"
android:label="FirstActivity">
<!--注册主活动-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
- 使用按钮触发 Toast 提醒
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button1 = (Button) findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(FirstActivity.this,
"Button 1 被点击", Toast.LENGTH_SHORT).show();
}
});
}
- 调用方法:
- 通过静态方法
makeText()
创建出一个 Toast 对象 - 调用
show()
将 Toast 显示出来
- 通过静态方法
- Toast 参数表
类型 | 描述 | |
---|---|---|
参数一 | Context | Toast 要求的上下文,一般为活动本身 |
参数二 | text | 要显示的文本内容 |
参数三 | 显示的时长,有两个内置常量可以选择,分别为:Toast.LENGTH_SHORT 和TOAST.LENGTH_LONG
|
- 在
res
下新建menu
目录,并创建main.xml
文件
新建菜单文件
代码如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/add_item"
android:title="Add"/>
<item
android:id="@+id/remove_item"
android:title="Remove"/>
</menu>
之后在FirstActivity.java
中重写onCreateOptionsMenu()
与onOptionsItemSelected()
方法
public boolean onCreateOptionsMenu(Menu menu) {
/**
* getMenuInflater()得到对象,再调用inflate()就可以创建菜单
* 返回true表示允许创建的菜单显示出来
* 返回false则菜单无法显示
*/
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
inflate()
参数表(当有两个参数时)
类型 | 描述 | |
---|---|---|
参数一 | layoutID | 需要加载的xml中layout资源的ID |
参数二 | root | 需要附加到resource资源文件的根控件 |
public boolean onOptionsItemSelected(MenuItem item) {
/**
* 菜单响应事件
* 调用item.getItemID()来判断某个菜单项
*/
switch (item.getItemId()) {
case R.id.add_item:
Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
- 销毁活动
- 方式一:使用返回键
- 方式二:调用
finish()
方法
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
- 使用显式 Intent 启动活动
步骤:
-
新建一个活动
SecondActivity
,不要勾选 Launcher Activity 选项 -
将新创建的布局文件的布局改为
LinearLayout
-
定义一个按钮
-
在
FirstActivity.java
中为按钮添加点击事件
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
// 启动目标活动
startActivity(intent);
}
});
Intent()
参数表
类型 | 描述 | |
---|---|---|
参数一 | Context | 要求提供一个启动活动的上下文 |
参数二 | Class | 指定想要启动的目标活动 |
- 使用隐式 Intent 启动活动
原理
不直接指定某一个活动,而是指定更为抽象的 action 和 category 等信息,之后由系统分析并找出可以响应这个隐式 Intent 的活动去启动
步骤
- 在
AndroidManifest.xml
中为SecondActivity
配置<intent-filter>
的内容
<intent-filter>
<!--指明当前活动可以响应 cn.lhlyblog.firstcode2_1.ACTION_START 这个 action-->
<action android:name="cn.lhlyblog.firstcode2_1.ACTION_START" />
<!--附加信息,更精确地指明了当前活动能够响应的 Intent 中还可能带有的 category-->
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
- 在
FirstActivity
中添加按钮点击事件
button5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent("cn.lhlyblog.firstcode2_1.ACTION_START");
startActivity(intent);
}
});
网友评论