
ã·ã¹ãã ãããã»ã¹ãäžå¿
èŠã«çµäºãããåŸãã¢ããªã±ãŒã·ã§ã³ã«äœãèµ·ããããèããããšã¯ãããŸããïŒ æ²ããããšã«ãå€ãã®äººã¯ãããããã©ã¬ã«ãŠãããŒã¹ã§çºçãã圌ãã«é¢ä¿ããªããã®ããã«ãããã«ã€ããŠãå¿é
ããŠããŸããã åå¿è
ã¯ç¹ã«ãã®åŸåããããŸãã ãªã³ã¯ã¹ã¿ãã£ãã¯ã®å®å®æ§ã«å¯Ÿãã圌ãã®ç²ç®çãªä¿¡ä»°ã¯ãåã«é©ãã¹ããã®ã§ãã
ãã®èšäºã§ã¯ãã¢ããªã±ãŒã·ã§ã³ããã»ã¹ã«é¢é£ãã第6æåŸéåïŒæ®ºããªãïŒã®çµæãšããŠçºçããå¯èœæ§ã®ããããã€ãã®ãšã©ãŒãšããããä»ã®äžçããã©ãã ãããŸãæ»ããã確èªããæ¹æ³ã«ã€ããŠèª¬æããŸãã
ããã»ã¹ãã·ã¹ãã ã«ãã£ãŠåŒ·å¶çµäºãããå¯èœæ§ãããããšã¯ç§å¯ã§ã¯ãããŸããã ãããŠãããªãã¯çåã«æã£ãŠããŸããããããç䌌ããããšã¯æ¬åœã«å¯èœã§ããïŒ ã·ã¹ãã ãã¢ããªã±ãŒã·ã§ã³ã«ãèªçºãããŠãé«è²Žãªã¡ã¢ãªãé£ãå°œããä»ã®ã¢ããªã±ãŒã·ã§ã³ãããããèµ·åããé©åãªã¢ããªã±ãŒã·ã§ã³ã殺ãããšã§ã·ã¹ãã ãããŠã³ããããšãé¡ãããšãã§ããŸãã ããçš®ã®ã·ã£ãŒãããºã ã§ããããšãå€æããŸãããããã¯ç®¡çè
ã®ãã¹ã§ãããããã°ã©ããŒã®ãã¹ã§ã¯ãããŸããã ã¢ããªã±ãŒã·ã§ã³ãç°¡åãã€è¿
éã«åŒ·å¶çµäºã§ããæ¹æ³ãããã³ã·ã¹ãã ããªãœãŒã¹ã解æŸããããã«å®è¡ããæ¹æ³ã«èå³ããããŸããã çµå±ããå®éšæ¡ä»¶ãã§ãã®åäœãç¹°ãè¿ãããšãã§ããã°ãéçºæ®µéã§å€ãã®ãšã©ãŒããã£ããããããç°¡åã«åçŸããŠåå ãç¹å®ãããã§ããŸãã
å€æããããã«ãå¿
èŠãªã¡ã«ããºã ã¯ãã§ã«SDKã«ãããããã¯...ãã©ã ããŒã«...ãã¢ããªã±ãŒã·ã§ã³ã®çµäºããã¿ã³ã§ãã

ã¯ãªãã¯ãããšã次ã®ã³ãŒããå®è¡ããã®ã«äŒŒãŠããŸãã
å®éãããã¯ããã»ã¹ã匷å¶çµäºããŸãã ã·ã¹ãã ãäžèŠãªããã»ã¹ãåé€ããããšãããšãåæ§ã®ã¢ã¯ã·ã§ã³ãçºçããŸãã
ã¢ããªã±ãŒã·ã§ã³ãå®å
šã«åæ¢ããåŸã«ã¢ããªã±ãŒã·ã§ã³ãåéããç¶æ³ãåçŸããã«ã¯ã次ã®äžé£ã®ã¢ã¯ã·ã§ã³ãå®è¡ããå¿
èŠããããŸãã
- Android Stidioã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ãèµ·åããŸãã
- [ããŒã ]ãã¿ã³ãæŒããŠãã¢ããªã±ãŒã·ã§ã³ãæå°åããŸãã
- Android Studioã§ã[Android]ã¿ãã«ç§»åããã¢ããªã±ãŒã·ã§ã³ãéžæããŠ[ã¢ããªã±ãŒã·ã§ã³ã®çµäº]ãã¿ã³ãã¯ãªãã¯ããŸãã
- æå°åãããã¢ããªã±ãŒã·ã§ã³ãå±éããŸãã
Activityãç Žå£åŸã®å埩ãé©åã«åŠçããªãå Žåãããã«ããã«æ°ä»ãã§ãããã ãããããããã¯èœã¡ãã§ããããææªã®å Žåãããã¯åããŸãã
ãã®ãããæãç§å¯ã®ã¿ã€ãã®ãšã©ãŒã®1ã€ãèªåŒããããšãåŠã³ãŸããã ãããã®ééããäºæž¬ããæ¹æ³ãåŠã³ãŸãããã æãæçœãªã±ãŒã¹ããå§ããŸãããããããããããŸãæ確ã§ãªãã±ãŒã¹ã«ã¹ã ãŒãºã«é²ã¿ãŸãããã
ç¶æ³1ïŒéçã¯ä¿¡é Œã§ããªã
ãã®ç¶æ³ãæ³åããŠãã ããã1ã€ã®ã¢ã¯ãã£ããã£ã§ãç¹å®ã®ããŒã¿ã»ããïŒå§ãšåãªã©ïŒãå
¥åããŸãã ãã®ã¢ã¯ãã£ããã£ã¯ãããŒã¿å
¥åã®æ£ç¢ºæ§ãå³å¯ã«ç£èŠãããããããŒã¿ã®ãæ£ç¢ºæ§ããããã³äžè¬ã«ããããå
¥åããããšããäºå®ã確å®ã«ä¿èšŒããããšãã§ããŸãã
æåã®æŽ»å public class StaticActivityFirst extends BaseActivity { private EditText mEditFirstName; private EditText mEditLastName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sit01_0_activity_first); mEditFirstName = (EditText) findViewById(R.id.editFirstName); mEditLastName = (EditText) findViewById(R.id.editLastName); } public void onNextClick(View view) { String firstName = mEditFirstName.getText().toString().trim();
[次ãž]ãã¿ã³ãã¯ãªãã¯ãããšãå
¥åãããããŒã¿ãä¿åãããªããžã§ã¯ããäœæãããéçãªã³ã¯ã«æžã蟌ãŸããŸãã次ã«ã2çªç®ã®ã¢ã¯ãã£ããã£ãéãããã®ããŒã¿ãé©åãªåœ¢åŒã§è¡šç€ºãããŸãã ããšãã°ã圌ã¯æ¬¡ã®ããã«æžããŠããŸãããããªãã®ååã¯ãŠã©ãžããŒã«ããŒãã³ã§ããã
第äºã®æŽ»å public class StaticActivitySecond extends BaseActivity { public static Person sPerson; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sit01_0_activity_second); TextView txtSummary = (TextView) findViewById(R.id.txtSummary); txtSummary.setText(String.format(getString(R.string.sit01_0_summary_message), sPerson.firstName, sPerson.lastName)); } }
ã³ãŒããããããããã«ãæåã®ã¢ã¯ãã£ããã£ã§ã¯ãéçºè
ã¯ãbotherãããªãããšã決å®ããããŒã¿ãéçå€æ°ã«é
眮ããŸããã ããã¯ãåçŽãªã·ãªã¢ã«åãåãå
¥ããããªããããªãç°åžžãªãªããžã§ã¯ããæž¡ãå¿
èŠãããå Žåã«éåžžã«é
åçã§ãã 圌ã¯ãŸãã2çªç®ã®ã¢ã¯ãã£ããã£ã«ã€ããŠé·ãèããããŒãããã§ãã¯ããŸããã§ããã ãªããæåã®ã¢ã¯ãã£ããã£ããã§ã«ãã¹ãŠãè¡ã£ãã®ã¯ãã€ã§ãã
2çªç®ã®ã¢ã¯ãã£ããã£ã§ããã»ã¹ãæ£ããç Žæ£ããããã«ãäžèšã®ã·ãŒã±ã³ã¹ãå®è¡ããŸãã ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããŸãã
ã©ãããããã§ã®åé¡ã¯ãnullã®ãã§ãã¯ã®æ¬ åŠã§ã¯ãããŸããã ææªã®åé¡ã¯ããŠãŒã¶ãŒããŒã¿ã®æ倱ã§ãã ç¹ã«ãããå¯äžã®å Žæã§ããå Žåãéçãªããžã§ã¯ãã¯ããŒã¿ãŠã§ã¢ããŠã¹ã§ãã£ãŠã¯ãªããŸããã ããã¯ãéåžžã®å€æ°ãšã·ã³ã°ã«ãã³ã®äž¡æ¹ã«é©çšãããŸãã ãã®ãããéèŠãªãã®ãéçã«ä¿åãããŠããå Žåã¯ããã€ã§ããã®éèŠãªãã®ã倱ãæºåãããŠãã ããã
ã©ããããã®ãããªãšã©ãŒã®ååšã¯ãå€ãã®å Žåãããã°ã©ãã®è³æ Œãäœãããæ æãé«ãããããšã瀺ããŠããŸãã ãããæ£ããè¡ãæ¹æ³ã«ã€ããŠãå€ãã®ãã¥ãŒããªã¢ã«ãæžãããŠããŸãã äžèšã®äŸã§ã¯ããã³ãã«ãä»ããããŒã¿è»¢éãæé©ã§ãã ãã®ããŒã¿ãSharedPreferencesã«æžã蟌ãããšããããŒã¿ããŒã¹ã®äœæãæ€èšããå¿
èŠããããŸãã
éèŠïŒã·ã³ã°ã«ãã³ãéçå€æ°ã§ããããšãå¿ããªãã§ãã ããã ã·ã³ã°ã«ãã³ã䜿çšããå Žåã¯ãããŒã¿ãžã®ã¢ã¯ã»ã¹ã容æã«ããããŒã«ãšããŠã®ã¿æ©èœããå¿
èŠããããŸãããããŒã¿ã®å¯äžã®ãªããžããªã§ã¯ãããŸããã
Magic Powerã¢ããªã±ãŒã·ã§ã³Applicationã¯ã©ã¹ãã·ã³ã°ã«ãã³ãšããŠäœ¿çšããããŸãã¯Applicationã¯ã©ã¹ã®onCreateïŒïŒã¡ãœããã§ã·ã³ã°ã«ãã³ãåæåããããã®ãã³ããã©ã®ãããã®é »åºŠã§è¡šç€ºããŸããã äŒãããããšããã§ã¯ããã®åŸã圌ã¯ã¬ãŒãã³ãããã¯ãŒã«ã«ãªããŸããã€ãŸããã©ããªç¶æ³ã§ããã¹ãŠã®çãç©ãããå
æ°ã«ãªããŸãã ãããããããã¯ç§ã ããééããç¹å¥ãªåŠæ³ã®å Žåã§ãã ããã«ãç§ãèŠã€ãããã¹ãŠã®åºçç©ã¯ãã·ã³ã°ã«ãã³ã®åæ§ã®ç¹æ§ãæããã«ããŠããªãã 圌ãã®äžã«ã¯ãã¢ã¯ãã£ããã£ã¯ã©ã¹ã§éå§ããå Žåãã¬ããŒãžã³ã¬ã¯ã¿ã«ãã£ãŠã·ã³ã°ã«ãã³ãç Žå£ãããå¯èœæ§ããããšèšã人ãããŸãïŒç§ã«ã¯å°ãã¯ã€ã«ãã«èãããŸãïŒã ä»ã®ã¯ã©ã¹ã§ã¯ãã¯ã©ã¹ããŒããŒããã¯ã©ã¹ãã¢ã³ããŒãããããšã§æãã£ãŠããŸãïŒããã¯ãã§ã«çå®ã®ããã§ãïŒã
ä»ãç§ã¯ããã§äœãçå®ã§ãäœãæšæž¬ã§ããããç¥ãã€ããã¯ãããŸããã ãããã«ãããããã¯ãªã³ã¯ã®çµ±èšæ
å ±ã倱ãå¯èœæ§ãæžããã ãã§ãããããã»ã¹ãåæ¢ããããšããããªããæãããã§ã¯ãããŸããã ããã»ã¹ãåæ¢ãããšãã¯ã©ã¹ããŒããŒãå®å
šã«ç Žå£ãããããã«äŒŽãApplicationã¯ã©ã¹ãå«ããã¹ãŠã®ã¯ã©ã¹ãç Žå£ãããŸãã
ç¶æ³2ïŒãã¹ãŠã®åé¡ã®è§£æ±ºçãšããŠã®setRetainInstance
ããã°ã©ããŒãåãšå§ã䜿çšããŠããã©ã°ã¡ã³ããã€ã¢ãã°ã䜿çšããŠäŸãç¹°ãè¿ãããšã決ãããšããŸãã
ãã®ãããå§ãšåãå
¥åããããã®ããã¹ããã£ãŒã«ããæã€DialogFragmentããããŸãã ãã®ãã©ã°ã¡ã³ãã¯ããªã¹ããŒããŒã¿ãšã³ããªã«èšå®ã§ããŸãã onCreateïŒïŒã§ãªã¹ããŒãžã®åç
§ã倱ããªãããã«ãsetRetainInstanceïŒtrueïŒãåŒã³åºãããŸãã
察話ã³ãŒãã®äžéš public class Situation2DialogFragment extends DialogFragment { private OnPersonChooseListener mListener; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); } public void setListener(OnPersonChooseListener listener) { mListener = listener; } public void invokePersonChoose(Person person) { mListener.onPersonChoose(person); } public interface OnPersonChooseListener { public void onPersonChoose(Person person); }
ç»é¢ã«ãã¿ã³ããããã¯ãªãã¯ãããšãã®ãã€ã¢ãã°ã衚瀺ãããŸãã
ã¢ã¯ãã£ããã£ããã®ãã€ã¢ãã°åŒã³åºã public void onChoosePersonClick(View view) { Situation2DialogFragment dialog = new Situation2DialogFragment(); dialog.setListener(new Situation2DialogFragment.OnPersonChooseListener() { @Override public void onPersonChoose(Person person) { Toast.makeText( Situation2Activity.this, String.format( getString(R.string.sit02_summary_message), person.firstName, person.lastName), Toast.LENGTH_SHORT ).show(); } }); dialog.show(getSupportFragmentManager(), Situation2DialogFragment.class.getName()); }
ãã®ãããªå®è£
ã¯ãç»é¢ã®å転ã«å¯ŸããŠèæ§ããããŸãã ãã¹ãŠãæèšã®ããã«æ©èœããŸãã ãšãããã...
ãã€ã¢ãã°ãéããŠãããšãã«ãããã»ã¹ã®unningãªç Žå£ã«äžé£ã®ã¢ã¯ã·ã§ã³ãé©çšããŸãã ãããã€ãããŠããäœãèµ·ãããŸããã ãã ããinvokePersonChooseãåŒã³åºããããšãã¢ããªã±ãŒã·ã§ã³ã¯NullPointerExceptionã§ã¯ã©ãã·ã¥ããŸãã
ã©ãããsetRetainInstanceïŒtrueïŒã¯ããã€ã¢ãã°ã®ç Žæ£ãèš±å¯ããŸããã§ããã ããã»ã¹ã®ç Žå£åŸãããã«ãããããã察話ã¯ç Žå£ãããŸããã ã¢ã¯ãã£ããã£ã¯ããã©ã°ã¡ã³ããå¯èœãªéã埩å
ããŸãã æ®å¿µãªããããªã¹ããŒã¯å®å
šã«ç°ãªããªããžã§ã¯ãã®ããã«å®å
šã«ç°ãªãå Žæã«ã€ã³ã¹ããŒã«ãããŠããããã埩å
ãããŸããã invokePersonChooseã¡ãœããã®ãã€ã¢ãã°ã§ãªã¹ããŒã®åŒã³åºããçºçãããšãäŸå€ãã¹ããŒãããŸãã ãããŠãnullãã§ãã¯ããªãå Žåã®åé¡ã¯ãããŸããã 空ã®ãªã³ã¯ã«é©åã«å¿çããã«ãã«ãã§ãã¯ãè¡ããšãããã«
æªã解決çã«ãªããŸãã
ã©ããããã©ã°ã¡ã³ãããã¢ã¯ãã£ããã£ã«ã¡ãã»ãŒãžãéä¿¡ããæ¹æ³ã®å€ãã¯ãã€ã³ã¿ãŒãããã§èª¬æãããŠããŸãã æ®å¿µãªããããã¹ãŠãæ£ããããã§ã¯ãããŸããã 次ã®æ¹æ³ã¯æ£ãããç§ã®ãæ°ã«å
¥ãã®1ã€ã§ãã
- ã¢ã¯ãã£ããã£ã¯ãç®çã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããŸãã
ã¢ã¯ãã£ããã£ã³ãŒãããŒã¹ public class Situation2Activity extends Activity implements OnPersonChooseListener {
- ãã©ã°ã¡ã³ãã¯ãgetActivityãä»ããŠã¢ã¯ãã£ããã£ãžã®åç
§ãååŸãã察å¿ããã€ã³ã¿ãŒãã§ã€ã¹ã«å°ããŸãã ããã«ããã¹ãŠã®äœæ¥ã¯ã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠå®è¡ãããŸãã
ãªã¹ããŒãæççã«ååŸãã public void onAttach(Activity activity) { super.onAttach(activity); if (activity instanceof OnPersonChooseListener) mListener = (OnPersonChooseListener) activity; else throw new RuntimeException("Activity must implement OnPersonChooseListener."); }
å¿ããŠã¯ãªããªãå¯äžã®ããšã¯ãã¢ã¯ãã£ããã£ã¯ã¡ãã»ãŒãžã®éä¿¡ã«é¢ããŠãã§ã«ç Žæ£ãããŠãããšããããšã§ãã ãããã£ãŠããã©ã°ã¡ã³ããã¢ã¯ãã£ããã£ã«è¿œå ãããŠãããã©ããã確èªããŠãã ããã
ã¢ã¯ãã£ããã£ã«å ããŠã芪ãã©ã°ã¡ã³ããŸãã¯ã¿ãŒã²ãããã©ã°ã¡ã³ãã䜿çšã§ããŸãã
setRetainInstanceã«é¢ããã»ãã®äžèšããã¯setRetainInstanceã®ç¹æ®ãªã±ãŒã¹ã«ãããŸããã 圌ãé ãããšãã§ããïŒãããŠè§£æ±ºããªãïŒåé¡ã®æ°ã¯ããå°ãã§ãã ãªã¹ããŒãšãšãã«ãä»ã®ãã¹ãŠã®å€æ°ã倱ãããŸãã onSaveInstanceStateã¡ãœããã§ä¿åãããªãã£ããã®ã¯ãã¹ãŠå€±ãããŸãã
ãŸãããã€ã¢ãã°ã¯ã©ã¹ãå¿åã®å Žåãåé¡ãé ããŸãã æ°ãããã€ã¢ãã°ãªããžã§ã¯ããäœæãããšãã«ãããã€ãã®ã¡ãœããããªãŒããŒã©ã€ãããããšããŸãããã®å Žåãå¿åã¯ã©ã¹ãªããžã§ã¯ããäœæãããŸãã
å¿åã¯ã©ã¹ãæã€ãªããžã§ã¯ããäœæããäŸ DialogFragment dialog = new DialogFragment() { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); } };
ãã®ãã€ã¢ãã°ãç Žæ£ãããã·ã¹ãã ãããã埩å
ããããšãããšãClassNotFoundExceptionãã¹ããŒãããŸãã
ã±ãŒã¹3ïŒå£ããã¹ã¬ãã
ã¢ããªã±ãŒã·ã§ã³ã®æ¬è³ªã次ã®ããã«ããŸãã
ç»é¢äžã®ãã¿ã³ã ãã¿ã³ãã¯ãªãã¯ãããšãé²è¡ç¶æ³ãã€ã¢ãã°ãéããUIãšã®å¯Ÿè©±ããããã¯ãããŸãã
é²æãã€ã¢ãã°ã³ãŒã public class ProgressDialogFragment extends DialogFragment { public static final String DISMISS_ACTION = "ru.kamisempai.ProgressDialogFragment.DISMISS_ACTION"; private boolean isWaitingForDismiss = false; private BroadcastReceiver mDismissActionReceiver; @Override public void onAttach(Activity activity) { super.onAttach(activity); mDismissActionReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { dismiss(); } }; LocalBroadcastManager.getInstance(activity) .registerReceiver(mDismissActionReceiver, new IntentFilter(DISMISS_ACTION)); } @Override public void onDetach() { if (mDismissActionReceiver != null) LocalBroadcastManager.getInstance(getActivity()) .unregisterReceiver(mDismissActionReceiver); super.onDetach(); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final android.app.ProgressDialog dialog = new android.app.ProgressDialog(getActivity()) { @Override public void onBackPressed() {
ã³ãŒãããç解ã§ããããã«ããã®ãã€ã¢ãã°ã¯ãããŒããã£ã¹ãã¡ãã»ãŒãžãéä¿¡ããããšã§éããããšãã§ããŸãã ããã¯ããªã³ã¯ãä¿åããå¿
èŠããªããã¢ããªã±ãŒã·ã§ã³ã³ã³ããã¹ããããã°ååã§ããããšãæå³ããŸãã
ãã€ã¢ãã°ãéå§ããçŽåŸã«ããã°ããã®éäœããããã¹ã¬ãããéå§ãããŸãã äœæ¥ã®æåŸã«ãã¹ã¬ããã¯ã¡ãã»ãŒãžãéä¿¡ããŠé²è¡ãã€ã¢ãã°ãéããŸãã
ã¹ããªãŒã ã®äœæãšéå§ public void onStartActionClick(View view) { new ProgressDialogFragment() .show(getSupportFragmentManager(), ProgressDialogFragment.class.getName()); final Context context = getApplicationContext(); new Thread() { @Override public void run() { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } LocalBroadcastManager.getInstance(context) .sendBroadcast(new Intent(ProgressDialogFragment.DISMISS_ACTION)); } }.start(); }
ãã®ã³ãŒããå®è¡ããŠãã¢ããªã±ãŒã·ã§ã³ã®æå°åã®ããã«ãã®å®äºãåŸ
ããã«ããã»ã¹ããªãã«ãããšããããã€æã«åé¡ãçºçããããšã¯ãªããã¢ããªã±ãŒã·ã§ã³ã¯ã¯ã©ãã·ã¥ããããã€ã¢ãã°ã衚瀺ãããŸãã ç§ãã¡ã¯å°ãåŸ
ã£ãŠããŸã...ç§ãã¡ã¯ãŸã åŸ
ã£ãŠããŸã...ããããç§ãã¡ã¯ãŸã åŸ
ã£ãŠããŸã...ããã¯é·ãéè¡ãããŠããã¯ãã§ããããã€ã¢ãã°ã¯éããŸããã
ã©ãããããã»ã¹ãç Žæ£ããããšããã®ãã¹ãŠã®ã¹ã¬ãããåæ¢ãã埩å
ããããšãã¡ã€ã³ã¹ã¬ããã®ã¿ãéå§ãããŸãã ãããã£ãŠãã¹ã¬ããã®å®è¡æéãé·ãããå Žåã¯ãåæ¢ããæºåãããŠãã ããã ãŸããé·ãéäœããããå¿
èŠã¯ãããŸãããåŸ
æ©éç¥ã䜿çšããŠããå Žåã§ãããã®ã¬ãŒããèžãããšãã§ããŸãã ãããªãã¯éçæçµãªããžã§ã¯ãããããã¯çšã®ãªããžã§ã¯ããšããŠäœ¿çšãããšãããã»ã¹ã匷å¶çµäºããããšãã«éçãªããžã§ã¯ããäŸå€ã§ãªãããšãæ¢ã«ç¥ã£ãŠãããããç¹ã«é¢çœãã§ãããã
åŸ
æ©éç¥ã®äŸ private static final Object LOCK = new Object(); public void onStartWaitClick(View view) {
ã©ãããã¿ã¹ã¯ãå¥ã®ãµãŒãã¹ã«ç§»åããŠæ°ããããã»ã¹ã§å®è¡ããã®ã«æéããããå Žåãããã«ãã©ã¢ã°ã©ãŠã³ãéç¥ãåºåããå Žåãããã»ã¹ã¯åŒ·å¶çµäºãããŸãã åŸ
æ©éç¥ã®å Žåããã¹ãŠãå°ãè€éã«ãªããç¹å®ã®ç¶æ³ã«äŸåããŸãã äžè¬ã«ãã¹ã¬ããã®æäœã®ãããã¯ã¯éåžžã«åºç¯å²ã§ãããç¹å®ã®ã¢ããã€ã¹ãäžããããšã¯ããã§ã¯äžé©åã§ãã è€éã«ãªããªãéããéçã«ç»ãããšã¯ã§ããŸãããããããæãåºãããšã¯ã§ããŸããã
ã±ãŒã¹4ïŒã©ããžã®æçŽ
åäžã®ãã¥ãŒãæã€ã¢ã¯ãã£ããã£ããããŸãã 圌女ã¯ããããŒããã£ã¹ãã¡ãã»ãŒãžãåä¿¡ããããã«ç»é²ãããŠããŸãã ã¢ã¯ãã£ããã£ããã®ãããªã¡ãã»ãŒãžãåä¿¡ãããšããã®ã¡ãã»ãŒãžã®å
容ã«å¿ããŠãã¥ãŒã®è²ãå€ãããŸãã [衚瀺]ãã¯ãªãã¯ãããšã2çªç®ã®ã¢ã¯ãã£ããã£ãéããè²ãå€æŽããããã«åãã¡ãã»ãŒãžãéä¿¡ã§ããŸãã
æåã®ã¢ã¯ãã£ããã£ã³ãŒã public class Situation4FirstActivity extends BaseActivity { public static final String ACTION_SET_COLOR = "ru.kamisempai.Situation4FirstActivity.ACTION_SET_COLOR"; public static final String EXTRA_COLOR = "ru.kamisempai.Situation4FirstActivity.EXTRA_COLOR"; private View mView; private BroadcastReceiver mSetColorActionReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mView = new View(this); setContentView(mView); mView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
ç»é¢ã®å転äžã«æåã®ã¢ã¯ãã£ããã£ãç Žå£ãããªãããã«ãconfigChangesããããã§ã¹ããã¡ã€ã«ã«è¿œå ãããŸãã
<activity android:name=".situation_04.Situation4FirstActivity" android:configChanges="orientation|screenSize"/>
2çªç®ã®ã¢ã¯ãã£ããã£ã«ã¯ãã¿ã³ããããã¯ãªãã¯ãããšè²ãå€æŽããã¡ãã»ãŒãžãéä¿¡ãããŸãã
2çªç®ã®ã¢ã¯ãã£ããã£ã³ãŒã public class Situation4SecondActivity extends BaseActivity { private Random mRandom; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sit04_activity_second); mRandom = new Random(System.currentTimeMillis()); } public void onRandomizeColorClick(View view) { Intent intent = new Intent(Situation4FirstActivity.ACTION_SET_COLOR); intent.putExtra( Situation4FirstActivity.EXTRA_COLOR, Color.BLACK + mRandom.nextInt(0xFFFFFF)); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } }
æåã®ã¢ã¯ãã£ããã£ã«æ»ããšããã¥ãŒã®è²ãå€æŽãããŸãã
ãã ãã2çªç®ã®ã¢ã¯ãã£ããã£ã«åãæ¿ããŠãã¢ããªã±ãŒã·ã§ã³ãæå°åããããã»ã¹ã匷å¶çµäºããŠããã¢ããªã±ãŒã·ã§ã³ããããã€ãããšãäºæããªãããšãçºçããŸãã è²å€æŽãã¿ã³ãäœåºŠã¯ãªãã¯ããŠããæåã®ã¢ã¯ãã£ããã£ã«æ»ããšããã®ãã¥ãŒã¯çã£çœã«ãªããŸãã
ã©ãããã¢ã¯ãã£ããã£ã®ã¹ã¿ãã¯ãä¿æããããšããäºå®ã«ãããããããã¢ããªã±ãŒã·ã§ã³ããããã€ãããåŸã2çªç®ã®ã¢ã¯ãã£ããã£ã®ã¿ã埩å
ãããŸããã å®éãè²å€æŽã¡ãã»ãŒãžã¯ã©ãã«ãè¡ããŸããã§ããã ãã®æ以æ¥ããã®ã€ãã³ãã«ãµãã¹ã¯ã©ã€ãããããªããžã§ã¯ãã¯ãããŸããã§ããã æåã®ã¢ã¯ãã£ããã£ã«æ»ã£ããšãã«åŸ©å
ãããŸããããè²å€æŽã€ãã³ãããµãã¹ã¯ã©ã€ãããã«ã¯é
ãããŸããã
ã©ããããŸã第äžã«ãäž»ãªãã®ãç解ããå¿
èŠããããŸã-ããã¢ã¯ãã£ããã£ã§äœæ¥ããå Žåãæ®ãã®ã¢ã¯ãã£ããã£ã¯ååšããŸããã æ
å ±ãäŒããå¿
èŠãããå Žåã¯ããã®ããã®setResultã䜿çšããŠãã ããã ããã§ããç²ç®çã«ã©ã€ããµã€ã¯ã«ã«é Œãã¹ãã§ã¯ãããŸããã äŸãããããããã«ãã¢ã¯ãã£ããã£1ãã¢ã¯ãã£ããã£2ãèµ·åããå Žåãããã¯æåã®ã¢ã¯ãã£ããã£ã®onCreateã¡ãœãããå®è¡ãããããšãæå³ããŸããã
ãã®äŸã§ã¯ãã¢ã¯ãã£ããã£ã¹ã¿ãã¯ã®åé¡ã ãã§ãªããã¡ãã»ãŒãžã®éä¿¡ã«é¢é£ãããã¹ãŠã®åé¡ã瀺ããŠããããšã«æ³šæããŠãã ããã å¯äžã®äŸå€ã¯ããããã§ã¹ãã«ç»é²ãããŠããããAlarmManagerãä»ããŠã¹ã±ãžã¥ãŒã«ãããŠããBroadcastReceiverã§ãã ä»ã®ãã¹ãŠã¯ãåä¿¡è
ãžã®ã¡ãã»ãŒãžã®é
ä¿¡ã«ã€ããŠ100ïŒ
ã®ä¿èšŒãäžãããã®ã§ã¯ãããŸããã
ãããã«
ãçµéšè±å¯ãªã³ãŒããŒãã«ãšã£ãŠããããã®ç¶æ³ã¯æçœã«æããããããããäŸã¯éåžžã«äžèªç¶ã§ãããããåçŽã«çŸããŸãã ããããç§ãã¡ã¯ãã€ãŠãŒãããå§ããŠãä»ã§ã¯æ¥ãã¹ãããšã«ãªãã³ãŒããæžããŸããã ç§ã®æ
ã®æåã«ãã®ã¬ãŒããç¥ã£ãŠããã°ãé¡ã®åé圢ãå°ãªããªããŸãã ãã®èšäºããçã®å€æ°ã®åå¿è
ã®Androidããã°ã©ããŒã®éããã¹ã«ãªãã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã ãçµéšè
ããããã³ã¡ã³ããèŠãŠããããã§ãã ããã«è¯ãããšã«ããªã¹ããå®æããããæžããããããšããã®èšäºã¯ãHowïŒïŒãã«ããŽãªã®ãã°ãèŠã€ããã®ã«åœ¹ç«ã¡ãŸããã ããã¯ã§ããŸããïŒã
ããã§çµãããŸãã ãæž
èŽããããšãããããŸããã æåŸã«ãªããŸãããç§ã®ã¹ãªãŒãã«ã¯ãŸã 1ã€ã®ç°åžžãªã±ãŒã¹ããããŸãã ãŸã æåŸãŸã§ç 究ãããŠããŸããããããã«ãã®ã¿ããªããããå²ã£ãŠã¿ãããšæããŸãã ç¶ç¶ãåŸ
ã¡ãŸãã