Reputation: 1430
@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];
}
I cannot work out the line
int id = intent.getIntExtra("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
.
Snippet of 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>
Used tutorial is here.
Upvotes: 1
Views: 6172
Reputation: 1124
Actually the answer of @stkent is correct.
The right parameter is like a backup, if no value can be found under "turtle_id"
.
In addition as a general source of information have a look in the Android API concerning your question. In many cases you will find there a short and genuine answer, how the methods work.
Upvotes: 0
Reputation: 20128
The documentation for the getIntExtra
method is as follows:
Retrieve extended data from the intent.
Parameters
name
The name of the desired item.
defaultValue
the value to be returned if no value of the desired type is stored with the given name.Returns
the value of an item that previously added with putExtra() or the default value if none was found.
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."
Upvotes: 5