「Android:画面切り替え」 2013/04/29


 あんなアプリ作りたいなぁ…などとフワフワ考えているときに、画面ってどうやって切り替えんの!?
っという疑問が浮かびました。
大抵のアプリは タイトル画面→メニュー画面→…といったように画面を切り替えながら動作をしていますし。

っというわけで疑問が頭に残ったままなのは気持ち悪いですので作りました。

アプリを起動した後の処理の流れは以下の通りです。
1.初めにActivity_1stを開始。その後、間髪入れずにActivity_2ndを開始。
2.
Activity_2ndの画面に切り替わる。nextButtonを押したらActivity_3rdを開始。
3.ACtivity_3rdの画面に切り替わる。backButtonを押したらActivity_2ndを開始。

・一番最初の画面(Activity_1st)
public class Activity_1st extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_1st);
		
		Activity_1st.this.finish();
        Intent i = new Intent (this, Activity_2nd.class);
        startActivity(i);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_1st, menu);
		return true;
	}

}

・2番目の画面(Activity_2nd)
public class Activity_2nd extends Activity implements OnClickListener{
	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_2nd);
		findView();
	}
	
	public void findView(){
		Button nextButton = (Button)findViewById(R.id.nextButton);
		nextButton.setOnClickListener(this);
	}

 @Override public void onClick(View v) { switch(v.getId()){ case R.id.nextButton: Intent i = new Intent(this,Activity_3rd.class); Activity_2nd.this.finish(); startActivity(i); break; } } }

・3番目の画面(Activity_3rd)
public class Activity_3rd extends Activity implements OnClickListener {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_3rd);
		findView();
	}

	public void findView() {
		Button backButton =(Button)findViewById(R.id.backButton);
		backButton.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch(v.getId()){
		case R.id.backButton:
			Intent i =new Intent(this,com.example.hello_world.Activity_2nd.class);
			Activity_3rd.this.finish();
			startActivity(i);
		break;
		}
	}
}

つまり、2nd画面と3rd画面には行ったり来たりできるけど、一番最初の1st画面には戻れません
っというアプリです。

今回作ったアプリでは、異なる画面(Activity)に切り替わる前に、現在のActivityをActivity_○○.this.finish();で終了させています。
したがって、Androidに搭載されている「戻る」ボタンを押すと、戻れるActivityが存在しないので
アプリが終了します。
これを利用すれば、こちらの用意したボタンだけで戻らせたい場合や、
ユーザーに見せたくない画面(Activity_1stとか^^;)があるときに、
戻らせないようにしたりできるかと思います。



地味だけど、とても重要な領域に触れることができて、ホクホク顔です。