美文网首页
《第一行代码》学习笔记——探究活动(未完待续)

《第一行代码》学习笔记——探究活动(未完待续)

作者: 冷火凉烟 | 来源:发表于2018-12-02 09:40 被阅读9次

《第一行代码》学习笔记

一、探究活动
  1. 手动创建活动,不勾选 Generate Layout File 和 Launcher Activity
手动创建活动
  1. 重写onCreate()方法(每个活动都应该重写)
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}
  1. 新建 layout 布局,并在活动中加载布局
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 加载布局
    setContentView(R.layout.first_layout);
}
  1. 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>标签内

  1. 配置主活动
<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>
  1. 使用按钮触发 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_SHORTTOAST.LENGTH_LONG
  1. 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;
}
  1. 销毁活动
  • 方式一:使用返回键
  • 方式二:调用finish()方法
button2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        finish();
    }
});
  1. 使用显式 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 指定想要启动的目标活动
  1. 使用隐式 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);
    }
});

相关文章

网友评论

      本文标题:《第一行代码》学习笔记——探究活动(未完待续)

      本文链接:https://www.haomeiwen.com/subject/bnzdcqtx.html