今回は今いるActivityから、他のActivityを呼ぶ方法を紹介します。
簡単に書くと
intent i = new Intent(this, パッケージ名.クラス名);
startActivity(i);
上記のように実装すると、新たな画面を呼ぶことができます。
ただ、上記の方法だと新しい画面に引数を渡していません。。
引数を使いたい人は
intent i = new Intent(this, パッケージ名.クラス名);
intent.putExtra("キーとなる文字列", "渡したい値");
startActivity(i);
startActivity(i);
こんな感じで完成です。
特に難しいことはないので、ご安心を。
intent.putExtraは何個でも作れます。
また、
startActivityForResult(intent, 呼び出し元のキーとなる数値);
を使うと、
呼び出し先のActivityが終了したときに、
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
にコールバックされます。
詳細は次回にでも。
↓にそれっぽいのを書いておきます。
例)
メインのActivityのボタンを押したら、
次の画面に遷移する。
package com.example.finishactivity;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
private final int iMAIN = 0;
private final int iSUB = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//画面を表示
setContentView(R.layout.main);
// ボタンの作成
Button button = new Button(getApplication());
button.setText("サブ画面呼び出し");
//ボタンのID
button.setId(iSUB);
button.setOnClickListener(this);
//ボタンを画面に追加
addContentView(button, new LinearLayout.LayoutParams( 350,70));
}
//クリックした時に呼ばれる
public void onClick(View view){
//どのIDのボタンをクリックしたかの判定
switch(view.getId()){
case iSUB:
//開く画面のクラスをインテント
Intent intent = new Intent(this, SubActivity.class);
//引数の作成
intent.putExtra("count", String.valueOf(iNo));
iNo += 1;
//引数を渡して、画面を呼ぶ
startActivityForResult(intent, iMAIN);
break;
default:
break;
}
}
}
どうですか?
動きました??
動かない人は
SubActivityを作ってください。
普段のActivityと同じもので大丈夫です。
それでも。うごかない人いますか?
startActivityForResultで止まってしまう人。
その方は
<activity
android:name="com.example.finishactivity.SubActivity"
android:label="サブ画面" >
</activity>
をmanifest.xmlに追記してください。
メインアクティビティの </activity>の下にでも追記してください。
以上で、Activityの呼び方は終了です。
おまけとして、
起動と同じくらい大事なのが
終了処理です。
終了処理について、少しだけ触れたページを以前作成致しました。
内容としては
finish();はいいよ。
っていうことでしたね
「内容うっすい」
とみなさん思われたでしょう。
私もそう思います。
本当はいろいろ、紹介したかったのですがね。。。、
まぁ、何であまり細かく書かなかったかというと、
処理の終了という概念が難しいからです。
完全に処理を終わらせるのか?
タスマネに出現しない状態にすればいいのか?
ユーザー目線での処理終了なのか?
なので、一番無難な
finish();
だけにしました。
画面が増えれば増えるほど、
Activityの管理は難しくなります。
また、そのアプリに課金、PUSH通知を実装していれば、
やはり、アプリの終了の仕方が変わります。
まぁ、用はいろいろだということです。
いろいろあるんですけれども、
Androidアプリで、Activtyの管理はとても大切です。
自分のアプリで最適なActivotyを是非見つけてください。
0 件のコメント:
コメントを投稿