android_learning:headfirst_android_development_notes:chapter_7
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
android_learning:headfirst_android_development_notes:chapter_7 [2016/02/08 01:35] – [p. 299] mithat | android_learning:headfirst_android_development_notes:chapter_7 [2016/02/21 03:33] (current) – mithat | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | <WRAP center round info 60%> | + | ====== Chapter 7 ====== |
- | Under development. | + | |
- | </ | + | |
- | + | ||
- | ====== Chapter 7 notes ====== | + | |
There' | There' | ||
Line 14: | Line 10: | ||
Finally, in '' | Finally, in '' | ||
+ | <WRAP center round tip 90%> | ||
+ | In an Android Studio' | ||
+ | {{: | ||
+ | </ | ||
===== p. 275: Code block ===== | ===== p. 275: Code block ===== | ||
<file java Workout.java> | <file java Workout.java> | ||
Line 71: | Line 71: | ||
You should change your code to use '' | You should change your code to use '' | ||
- | ===== p. 281 ===== | + | |
- | <WRAP center round todo 90%> | + | |
- | Should '' | + | |
- | </ | + | |
===== p. 290 ===== | ===== p. 290 ===== | ||
- | Again, change | + | Change |
===== p. 292: A matter of style ===== | ===== p. 292: A matter of style ===== | ||
Line 114: | Line 111: | ||
</ | </ | ||
- | <WRAP center round tip 90%> | ||
To create an interface file in Android Studio, click on //New > Java class//. If you are asked to specify where to create the new file select the desired option. Then in the Create New Class dialog, select // | To create an interface file in Android Studio, click on //New > Java class//. If you are asked to specify where to create the new file select the desired option. Then in the Create New Class dialog, select // | ||
- | </ | ||
==== " | ==== " | ||
- | You also may not have seen " | + | You also may not have seen " |
A post on Stack Overflow((" | A post on Stack Overflow((" | ||
Line 259: | Line 254: | ||
View view = getView(); | View view = getView(); | ||
if (view != null) { | if (view != null) { | ||
- | // Cache the bits we'll need: | + | // Cache the stuff we'll need: |
TextView title = (TextView) view.findViewById(R.id.textTitle); | TextView title = (TextView) view.findViewById(R.id.textTitle); | ||
TextView description = (TextView) view.findViewById(R.id.textDescription); | TextView description = (TextView) view.findViewById(R.id.textDescription); | ||
Line 271: | Line 266: | ||
</ | </ | ||
- | This seems perfectly sensible, and if you run it it seems to work fine. But if you try to click the " | + | This seems perfectly sensible, and if you run it it seems to work fine. But if you try to click the " |
- | <WRAP center round todo 60%> | + | |
- | Make and embed video | + | |
- | </ | + | |
The user's expected behavior is for the back button to show the previously selected details. But the back button' | The user's expected behavior is for the back button to show the previously selected details. But the back button' | ||
Line 303: | Line 295: | ||
WorkoutDetailFragment details = new WorkoutDetailFragment(); | WorkoutDetailFragment details = new WorkoutDetailFragment(); | ||
+ | // Set the new fragment' | ||
+ | details.setWorkoutId(id); | ||
+ | | ||
// Call up the fragment manager to start a new transaction. | // Call up the fragment manager to start a new transaction. | ||
FragmentTransaction ft = getFragmentManager().beginTransaction(); | FragmentTransaction ft = getFragmentManager().beginTransaction(); | ||
- | |||
- | // Set the new fragment' | ||
- | details.setWorkoutId(id); | ||
// Specify the transactions you want to perform: | // Specify the transactions you want to perform: | ||
Line 318: | Line 310: | ||
ft.addToBackStack(null); | ft.addToBackStack(null); | ||
- | // Specify a visual | + | // Specify a visual |
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); | ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); | ||
Line 330: | Line 322: | ||
</ | </ | ||
- | All those '' | + | All those '' |
<code java> | <code java> | ||
@Override | @Override | ||
Line 348: | Line 340: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | ===== p. 304 ===== | ||
+ | My emulated tablet behaves oddly when started in landscape mode and then rotated to portrait mode. It seems to work as expected if started in portrait mode and then rotated. | ||
+ | |||
+ | ===== p 316 ===== | ||
+ | If you try to run the app on a phone-sized device or emulator at this point, it will crash when you click on one of the activities. Can you explain why? (The answer should be clear after you examine the code on p. 321.) | ||
+ | |||
+ | ===== p. 319: Code block ===== | ||
+ | Note that '' | ||
+ | |||
+ | <file java DetailActivity.java> | ||
+ | package com.hfad.workout; | ||
+ | |||
+ | import android.app.Activity; | ||
+ | import android.os.Bundle; | ||
+ | |||
+ | public class DetailActivity extends Activity { | ||
+ | public static final String EXTRA_WORKOUT_ID = " | ||
+ | |||
+ | @Override | ||
+ | protected void onCreate(Bundle savedInstanceState) { | ||
+ | super.onCreate(savedInstanceState); | ||
+ | setContentView(R.layout.activity_detail); | ||
+ | WorkoutDetailFragment workoutDetailFragment = (WorkoutDetailFragment) | ||
+ | getFragmentManager().findFragmentById(R.id.detail_frag); | ||
+ | int workoutId = (int) getIntent().getExtras().get(EXTRA_WORKOUT_ID); | ||
+ | workoutDetailFragment.setWorkoutId(workoutId); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== p. 321 ===== | ||
+ | |||
+ | Here's the '' | ||
+ | |||
+ | <file java MainActivity.java> | ||
+ | package com.hfad.workout; | ||
+ | |||
+ | import android.app.FragmentTransaction; | ||
+ | import android.app.Activity; | ||
+ | import android.content.Intent; | ||
+ | import android.os.Bundle; | ||
+ | |||
+ | public class MainActivity extends Activity implements WorkoutListListener { | ||
+ | |||
+ | @Override | ||
+ | protected void onCreate(Bundle savedInstanceState) { | ||
+ | super.onCreate(savedInstanceState); | ||
+ | setContentView(R.layout.activity_main); | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public void itemClicked(long id) { | ||
+ | // Check to see if we have a fragment_container | ||
+ | // ... if we do, then we're on a large screen. | ||
+ | if (findViewById(R.id.fragment_container) != null) { | ||
+ | // Create a new WorkoutDetailFragment to replace the previous one. | ||
+ | WorkoutDetailFragment details = new WorkoutDetailFragment(); | ||
+ | |||
+ | // Set the new fragment' | ||
+ | details.setWorkoutId(id); | ||
+ | |||
+ | // Call up the fragment manager and do a new transaction. | ||
+ | getFragmentManager().beginTransaction() | ||
+ | .replace(R.id.fragment_container, | ||
+ | .addToBackStack(null) | ||
+ | .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE) | ||
+ | .commit(); | ||
+ | } | ||
+ | else { | ||
+ | // Create an intent to launch a DetailActivity | ||
+ | Intent intent = new Intent(this, | ||
+ | intent.putExtra(DetailActivity.EXTRA_WORKOUT_ID, | ||
+ | startActivity(intent); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ |
android_learning/headfirst_android_development_notes/chapter_7.1454895311.txt.gz · Last modified: 2016/02/08 01:35 by mithat