当前位置: 首页 > 面试题库 >

了解getIntExtra()参数

宇文学博
2023-03-14
问题内容
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_details);$$

  // pull the turtle's ID out of the intent that the MainActivity used to load me
    Intent intent = getIntent();
    int id = intent.getIntExtra("turtle_id", R.id.leo);
    String text = "";
    if (id == R.id.leo) {
        text = TURTLE_DETAILS[0];
    } else if (id == R.id.mike) {
        text = TURTLE_DETAILS[1];
    } else if (id == R.id.don) {
        text = TURTLE_DETAILS[2];
    } else { // if (id == R.id.raph)
        text = TURTLE_DETAILS[3];
    }

我无法解决问题

int id = intent.getIntExtra("turtle_id", R.id.leo);

我看不到为什么R.id.leo被指定?turtle_id是名称,但我不确定R.id.leo

的片段 MainActivity.java

    /*
     * Called when the Details activity finishes running and comes back to here.
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

    }

    /*
     * Called when the user clicks on the large TMNT image button.
     * Loads the DetailsActivity for more information about that turtle.
     */
    public void onClickTurtleImage(View view) {
        Intent intent = new Intent(this, DetailsActivity.class);

        RadioGroup group = (RadioGroup) findViewById(R.id.turtle_group);
        int id = group.getCheckedRadioButtonId();
        intent.putExtra("turtle_id", id);
        startActivity(intent);
    }

    /*
     * This method is called when the user chooses one of the turtle radio buttons.
     * In this code we set which turtle image is visible on the screen in the ImageView.
     */
    public void pickTurtle(View view) {
        ImageButton img = (ImageButton) findViewById(R.id.turtle);
        if (view.getId() == R.id.leo) {
            img.setImageResource(R.drawable.tmntleo);
        } else if (view.getId() == R.id.mike) {
            img.setImageResource(R.drawable.tmntmike);
        } else if (view.getId() == R.id.don) {
            img.setImageResource(R.drawable.tmntdon);
        } else if (view.getId() == R.id.raph) {
            img.setImageResource(R.drawable.tmntraph);
        }
    }
}

DetailsActivity.java

/*
 * CS 193A, Winter 2015, Marty Stepp
 * This app is a continuation of our TMNT app from last week.
 * Today's version adds a second activity and launches that activity using an Intent.
 * This file represents the Java code for the second activity.
 */

package com.example.stepp.layoutfun;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class DetailsActivity extends Activity {
    /*
     * Constant array of data about each of the four turtles.
     * (This is not the most idiomatic way to store such information,
     * but we'll come back to it later.)
     */
    private static final String[] TURTLE_DETAILS = {
            ""/*Long Story but not relevant for the question*/
    };

    /*
     * Called when the activity first gets created.
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_details);

        // pull the turtle's ID out of the intent that the MainActivity used to load me
        Intent intent = getIntent();
        int id = intent.getIntExtra("turtle_id", R.id.leo);
        String text = "";
        if (id == R.id.leo) {
            text = TURTLE_DETAILS[0];
        } else if (id == R.id.mike) {
            text = TURTLE_DETAILS[1];
        } else if (id == R.id.don) {
            text = TURTLE_DETAILS[2];
        } else { // if (id == R.id.raph)
            text = TURTLE_DETAILS[3];
        }
        TextView tv = (TextView) findViewById(R.id.turtle_info);
        tv.setText(text);
    }
}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:gravity="top|center"
    android:orientation="vertical"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <RadioGroup
        android:id="@+id/turtle_group"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <RadioButton
            android:id="@+id/leo"
            android:onClick="pickTurtle"
            android:text="Leo"
            android:checked="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <RadioButton
            android:id="@+id/mike"
            android:onClick="pickTurtle"
            android:text="Mike"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <RadioButton
            android:id="@+id/don"
            android:onClick="pickTurtle"
            android:text="Don"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <RadioButton
            android:id="@+id/raph"
            android:onClick="pickTurtle"
            android:text="Raph"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </RadioGroup>
    <ImageButton
        android:id="@+id/turtle"
        android:onClick="onClickTurtleImage"
        android:src="@drawable/tmntleo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

二手教程在这里。


问题答案:

该方法的文档getIntExtra如下:

从意图中检索扩展数据。

参量

name 所需项目的名称。

defaultValue 如果没有使用给定名称存储所需类型的值,则返回该值。

退货

以前使用putExtra()添加的项目的值;如果未找到,则为默认值。

因此,在您的示例中,如果该键存在于中,则将被分配id与该键关联的整数值;如果不turtle_id存在Intent,则将被分配该整数值R.id.leo。通常,使用此方法是为了在使用者启动this时未能传递必需的信息时提供合理的默认值Activity。在您的特定情况下,此行为可以解释为:“如果呼叫者在启动此操作时忘记告诉我选择了哪只乌龟Activity,则假定是狮子座。”



 类似资料:
  • 问题内容: 我试图在将张量流模型转换为tflite模型时使用UINT8量化: 如果使用use ,则模型大小比原始fp32模型小4倍,因此我假定模型权重为uint8,但是当我加载模型并通过float32获取输入类型时。量化模型的输出与原始模型大致相同。 转换模型的输入/输出: 另一个选择是显式指定更多参数:模型大小比原始fp32模型小x4,模型输入类型为uint8,但模型输出更像垃圾。 转换模型的输

  • 本文向大家介绍深入了解MyBatis参数,包括了深入了解MyBatis参数的使用技巧和注意事项,需要的朋友参考一下 深入了解MyBatis参数 相信很多人可能都遇到过下面这些异常: "Parameter 'xxx' not found. Available parameters are [...]" "Could not get property 'xxx' from xxxClass. Caus

  • 问题内容: 我刚刚开始学习Angular.js,并且一直在Angular主页上的“连接后端”示例中查看project.js。 我对控制器功能中的参数感到困惑: 这些控制器函数在routeProvider中调用,但未给出任何参数。 我能找到到目前为止,这可能解释发生了什么事情的唯一的事情是“注入服务整合到控制器”,这说明,而不是参数的方法和。 我的具体问题是: 控制器参数是什么? 带有参数的控制器功

  • 敏捷第6章中这一行的语法让我和文档一样感到困惑。我很难理解当哈希用作参数时发生了什么。 这条线是这样的: 缩短的手册页如下: 创建给定的链接标签 选项 •:数据 •方法:HTTP动词的符号 数据属性 确认:“问题?” 在本例中,看起来我传递了一个参数(name=‘Destroy’)和一个选项哈希。没有HTML选项哈希或代码块。未指定任何url_for选项。 我无法理解手册页。“选项”部分描述了选项

  • 首先,我的声明是: 我的主要活动获取编号和文本: 我的Activity2应该得到数字和文本: 文本很受欢迎,但数值始终为0。

  • 本文向大家介绍es6函数的rest参数你有了解吗?相关面试题,主要包含被问及es6函数的rest参数你有了解吗?时的应答技巧和注意事项,需要的朋友参考一下 函数的参数使用...reset来表示,普通函数和箭头函数通用,aguments箭头函数不能使用。