了解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

的片段 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,则假定是狮子座。”

以上是 了解getIntExtra()参数 的全部内容, 来源链接: utcz.com/qa/415821.html

回到顶部