理解getIntExtra()参数 [英] Understanding getIntExtra() arguments

查看:507
本文介绍了理解getIntExtra()参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

@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

I cannot see why R.id.leo has been specified? turtle_id is the name but I am not sure the point of 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 方法如下:


从意图中检索扩展数据。

Retrieve extended data from the intent.

参数

name 所需项目的名称。

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

defaultValue the value to be returned if no value of the desired type is stored with the given name.

返回

之前使用putExtra()或默认值,如果没有找到。

the value of an item that previously added with putExtra() or the default value if none was found.

所以在你的例子中, id 将被分配给我与键 turtle_id 关联的nteger值,如果该键存在于 Intent 中,将被赋予整数值 R.id.leo 如果没有。通常,如果消费者在启动此活动时未能传递必要信息,则使用此方法以便提供合理的默认值。在您的特定情况下,此行为可以解释为:如果调用者忘记告诉我在启动此活动时选择了哪只乌龟,则假设它是Leo。

So in your example, id will be assigned the integer value associated with the key turtle_id if that key exists in the Intent, and will be assigned the integer value R.id.leo if not. Typically, this is used so that sensible defaults are provided if a consumer fails to pass in the requisite information when starting this Activity. In your particular case, this behavior can be interpreted as: "if the caller forgot to tell me which turtle was selected when starting this Activity, assume it was Leo."

这篇关于理解getIntExtra()参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆