# Android 例题套卷(二)//claude code生成


一、选择题(每题 5 分,共 10 题)

  1. Android SDK 中,用于调试的命令行工具是?

    A. git

    B. adb

    C. maven

    D. gradle

    答案:B

    解析:adb 是连接电脑和 Android 设备的调试桥梁,用于安装 APK、查看日志、进入 shell 等。

  2. EditTextandroid:hint 属性作用是?

    A. 设置输入框的背景颜色

    B. 设置输入框的默认文字,获取内容时会包含该文字

    C. 设置输入框的占位提示文字,输入时消失

    D. 设置输入框为密码模式

    答案:C

    解析:hint 是灰色占位提示文字,用户输入后自动消失。获取内容时不会拿到 hint 文字。

  3. AlertDialog 中,点击"确定"按钮的回调应设置在哪个方法中?

    A. setPositiveButton()

    B. setNegativeButton()

    C. setNeutralButton()

    D. setOnClickListener()

    答案:A

    解析:PositiveButton(确定)、NegativeButton(取消)、NeutralButton(中性),三个按钮在对应方法中设置回调。

  4. Android 中不允许在主线程执行网络操作,否则会抛出什么异常?

    A. NullPointerException

    B. NetworkOnMainThreadException

    C. ClassNotFoundException

    D. IllegalStateException

    答案:B

    解析:Android 3.0 起强制要求网络操作在子线程执行,主线程做网络请求直接抛此异常。

  5. 要使 LinearLayout 中的子控件按比例分配剩余空间,应使用哪个属性?

    A. android:layout_gravity

    B. android:gravity

    C. android:layout_weight

    D. android:layout_span

    答案:C

    解析:layout_weight 按权重分配剩余空间。使用 weight 时建议将对应方向宽高设为 0dp。

  6. 下列哪个不是 Intent 可以完成的功能?

    A. 启动 Activity

    B. 发送广播

    C. 直接操作数据库

    D. 启动 Service

    答案:C

    解析:Intent 是组件间通信信使,能启动 Activity/Service、发送广播,但不能操作数据库。

  7. TableLayout 中,android:layout_span="2" 的含义是?

    A. 该控件占据第 2 列

    B. 该控件跨 2 列

    C. 该控件宽度为 2dp

    D. 该控件在第二行

    答案:B

    解析:layout_span 是跨列属性,类似 HTML td 的 colspan。layout_column 是指定列索引(从 0 开始)。

  8. 关于 Toast.makeText(),以下说法正确的是?

    A. 第一个参数是 String 类型

    B. 第三个参数可以传入自定义毫秒数

    C. 调用 makeText() 后不需要调用 show() 也会显示

    D. 第三个参数可选值为 Toast.LENGTH_SHORTToast.LENGTH_LONG

    答案:D

    解析:参数1 是 Context;参数3 只能是 LENGTH_SHORT 或 LENGTH_LONG;必须调 .show() 才会显示。

  9. 创建显式 Intent 跳转页面时,需要传入什么参数?

    A. 目标 Activity 的类名

    B. 目标 Activity 的包名

    C. 目标 Activity 的字符串名称

    D. 目标 Activity 的布局文件

    答案:A

    解析:new Intent(this, TargetActivity.class) 第二个参数是目标 Activity 的 Class 对象。

  10. layout_width="match_parent" 的含义是?

    A. 宽度由内容决定

    B. 宽度与父容器一致

    C. 宽度为 0

    D. 宽度占屏幕一半

    答案:B

    解析:match_parent(旧名 fill_parent)表示控件尺寸与父容器相同,填满可用空间。


二、填空题(每题 4 分,共 10 题)

  1. Android 应用开发的标准 IDE 是 ____________。

    答案:Android Studio

    解析:基于 IntelliJ IDEA,Google 官方推荐 IDE,集成了 Gradle 构建、ADB 调试、模拟器管理。

  2. Intent 分为两种:____________ Intent 直接指定目标组件,____________ Intent 通过 action/data 匹配目标组件。

    答案:显式(Explicit);隐式(Implicit)

    解析:显式用于应用内跳转;隐式用于跨应用调用。

  3. Spinner(下拉列表)需要绑定 ____________ 来设置选项数据。

    答案:Adapter(适配器)

    解析:Spinner 和 ListView 都通过 Adapter 作为数据和视图间的桥梁。

  4. build.gradle 中,minSdkVersion 的作用是设置 ____________。

    答案:应用最低兼容的 Android API 版本

    解析:minSdk 决定应用能安装的最老系统版本。低于该版本的设备在应用商店看不到此应用。

  5. Android 发送 HTTP 请求前,必须在 manifest 中声明 ____________ 权限。

    答案:<uses-permission android:name="android.permission.INTERNET" />

    解析:INTERNET 是普通权限,只需在 manifest 声明即生效。

  6. LinearLayout 的排列方向由 ____________ 属性控制。

    答案:android:orientation

    解析:取值 vertical(垂直)或 horizontal(水平),默认为 horizontal。

  7. RelativeLayout 中让控件水平居中的属性是 ____________。

    答案:android:layout_centerHorizontal

    解析:centerHorizontal 仅水平居中;centerInParent 同时水平和垂直居中。

  8. Button 在布局中通过 android:onClick 属性绑定的方法,参数类型固定为 ____________。

    答案:View

    解析:如 public void myClick(View view),参数必须是 View,名称可自定义。

  9. 文字大小的推荐单位是 ____________,布局宽高的推荐单位是 ____________。

    答案:sp;dp

    解析:sp 受系统字体大小设置影响适合文字;dp 不受字体设置影响适合布局。

  10. Message.obtain() 相比 new Message() 的优势是 ____________。

    答案:从消息池复用对象,更高效,避免频繁创建

    解析:Android 维护 Message 对象池(最大 50 个),obtain() 优先取回收对象。


三、简答题(每题 7 分,共 4 题)

  1. 简述 Android 中 gravitylayout_gravity 的区别。

    答案:gravity 是控件自身内容相对于控件边界的对齐方式(内部对齐);layout_gravity 是控件本身在父容器中的对齐方式(外部对齐)。

    解析:记忆方法:有 layout 前缀的是控件对外部父容器的表现。

  2. 写出三种实现 Button 点击事件的方法。

    答案:① XML 中声明 android:onClick,Activity 中定义同名 public void 方法;② button.setOnClickListener() 传匿名内部类;③ Activity 实现 View.OnClickListener 接口,button.setOnClickListener(this)

    解析:方式①最简单;方式②最常用;方式③多个按钮共享逻辑时方便。

  3. 简述 AlertDialog 的创建步骤。

    答案:new AlertDialog.Builder(context).setTitle().setMessage().setPositiveButton().setNegativeButton().show()。AlertDialog 不能直接 new,必须通过 Builder。

    解析:Builder 模式核心是不直接 new AlertDialog(),而是链式调用构建。

  4. 简述 Socket 与 HTTP 连接的主要区别。

    答案:Socket 是基于 TCP/IP 的长连接,需手动管理协议格式,适合实时双向通信;HTTP 是请求-响应模式的无状态短连接,有标准 Headers 和状态码,适合 Web API。

    解析:HTTP 底层也是 TCP Socket,但封装了标准格式。Socket 更灵活但更复杂。


四、编程题(填空方式)(每题 10 分,共 2 题)

  1. 以下代码创建一个 AlertDialog 并显示。
java 复制代码
new __________(1)__________
    .__________(2)__________("提示")
    .__________(3)__________("确定要退出吗?")
    .setPositiveButton("确定", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            finish();
        }
    })
    .setNegativeButton("取消", __________(4)__________)
    .__________(5)__________;

答案:(1) AlertDialog.Builder(this) (2) setTitle (3) setMessage (4) null (5) show()

解析:Builder 模式链式调用:new Builder → setTitle → setMessage → setPositiveButton → setNegativeButton → show。


  1. 以下代码使用 HttpURLConnection 发送 GET 请求获取数据。
java 复制代码
private String doGet(String urlString) throws Exception {
    URL url = new URL(urlString);
    HttpURLConnection conn = (HttpURLConnection) url.__________(1)__________;
    conn.setRequestMethod(__________(2)__________);
    conn.setConnectTimeout(5000);
    conn.setReadTimeout(5000);

    int code = conn.__________(3)__________;
    if (code == __________(4)__________) {
        InputStream is = conn.__________(5)__________;
        // 读取流并返回结果...
    }
    conn.disconnect();
    return null;
}

答案:(1) openConnection() (2) "GET" (3) getResponseCode() (4) 200 (5) getInputStream()

解析:openConnection → setRequestMethod → getResponseCode → 判断 200 → getInputStream → disconnect。