猫型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
-

執筆者:

関連記事

バインドを利用したservice

バインドを利用しないserviceもありますが、serviceは勝手に動き続けるか、自動的に停止するようにするかになります。 実際にはバインドを利用してserviceが起動している時にもアクションを連 …

ListView(2行)

ListViewの各行に2行表示させるには、ListActivityをextendします。 また、かくリストのデータはmapで設定します。 TestActivity.java package com. …

Activityの遷移時のアニメーションをなくす

いいのか悪のいのか、BroadcastReceiverで数秒毎に元のActivityを呼び出しカウントアップさせてしまいました。 これだとスリープ状態でもOK!?なのでしかたありません。。。 とりあえ …

SQLiteにPupSQLiteでアクセスする

PupSQLiteは任意の場所からダウンロードしてください。 PupSQLiteでなくてもエミュレーターからもデータベースファイルを抜き出すことができるので、それを利用して確認等が行えます。 まずはE …

SQLiteに普通のselectを実行する

rawQueryメソッドを使用すれば、通常のselect分が利用できます。 取得したデータはカーソルを使って読み込みます。 ・・・ DBHelper helper = new DBHelper(Tes …