猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

Android

アクティビティ間の画面遷移

投稿日:2013年3月6日 更新日:

アクティビティから別のアクティビティを呼びだすと、新しいアクティビティは上に重ねられた状態になり、今まで使用していたアクティビティは停止します。
そして新しいアクティビティが終了すると、元のアクティビティが動作し始めます。

呼び出し方には2種類あって、単純に呼び出す方法と、新しいアクティビティが終了すると結果を受信する方法があります。

どちらの呼び出しでもintentを使用し、intentに文字列等を設定して渡してやることができます。
アクティビティ間でオブジェクトを渡す場合にはserializeが必用なので注意が必要ですがここではふれません。

intentには明示的インテントと暗黙的インテントがありますが、同じアプリ内で特定のアクティビティから特定のアクティビティを呼び出す場合には明示的インテントになります。
暗黙的インテントではURIを指定して、合致するURIを持つアプリが起動されるか、複数ある場合はどれを起動するか選択できますが、ここではふれまん。

新しく自作でアクティビティを作成することになるので、AndroidManifest.xmlに登録する必要があります。

単純な呼び出し

呼びだし元ではstartActivity()を使い新しいアクティビティを起動します。。新しいアクティビティはfinish()で終了し、元のアクティビティに戻ります。

//呼び出し元
    class btnClickListener implements OnClickListener{
		public void onClick(View v) {
			Intent intent = new Intent(Activity.this,Activity2.class);
			intent.putExtra(";MESSAGE";, ";値";);
			startActivity(intent);
		}
    }
//新しいアクティビティ
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity2);
        Intent data = getIntent();
        Bundle extras = getExtras();
        String msg = extras.getString(";MESSAGE";);
        ・・・
    }
    class btnClickListener implements OnClickListener{
		public void onClick(View v) {
			finish();
		}
    }
<!-- AndroidManifest.xml -->
<activity android:name=";Activity2"; />

結果を受信する呼び出し

新しいアクティビティが終了する際にsetResultで値を設定し、その値を元のアクティビティではonActibityResultメソッドで受信します。

//呼び出し元
    private static final int ACT_CALL_OK = 0;
    class btnClickListener implements OnClickListener{
		public void onClick(View v) {
			Intent intent = new Intent(Activity.this,Activity2.class);
			intent.putExtra(";MESSAGE";, ";値";);
			startActivityForResult(intent,ACT_CALL_OK);
		}
    }
    @Override
    public void onActivityResult(int requestCode,int resultCode,Intent data){
    	if(requestCode==ACT_CALL_OK &amp;&amp; resultCode==RESULT_OK){
    		Bundle extra = data.getExtras();
    		String msg = extra.getString(";MODORI";);
    	}
    	
    }

//新しいアクティビティ
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity2);
        Intent data = getIntent();
        Bundle extras = getExtras();
        String msg = extras.getString(";MESSAGE";);
        ・・・
    }
    class btnClickListener implements OnClickListener{
		public void onClick(View v) {
			Intent intent = getIntent();
			intent.putExtra(";MODORI";, ";戻す値";);
			setResult(RESULT_OK, intent);
			finish();
		}
    }
<!-- AndroidManifest.xml -->
<activity android:name=";Activity2"; />

Gooleアドセンス用336

Gooleアドセンス用336

-Android
-

執筆者:

関連記事

Micro USB の充電用とデータ転送用

以前 「SonyEricssonXPERIA SO-01Bのドライバのインストール」 というものを書きました。 このどうしようもない端末は、MicroUSBにも問題があります。 しかもこの端末、古すぎ …

音声認識と音声合成(Text-To-Speech)

INDEX1 音声認識2 音声合成(Text-To-Speech)3 サンプル 音声認識 音声認識で注意しなくてはいけないのは、何語で認識させるかです。 つまり英語として認識させるか、日本語として認識 …

layoutのxmlに配置したListViewをアクティビティで操作する

ListViewの操作にはadapterを使用します。 INDEX1 xml2 アクティビティ3 単純な呼び出し4 結果を受信する呼び出し xml ListViewにアクセスできるようにidを付けてお …

別スレッドから画面を制御するhandlerの使い方

別スレッドから画面(layout)を制御するにはhandlerを使用します。 制御したい画面を持つアクティビティに、handerの宣言をします。 宣言したhandlerはsendMessageメソッド …

layoutのxmlに配置したボタンにクリックイベントを追加する

ボタンなどのビューは、コードで記述することもできますが、 やはりres/layout/xxx.xmlで作成するのが一般的です。 xmlで作成したビューに、はアクティビティのonCreateでリスナーを …