プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Java(Android)、画面遷移する(2)・・画面遷移する

画面遷移する(1)・・の前準備で複数画面用意する。

が終わって複数画面用意できたところで画面遷移しますか。
前準備として

・MainActivity.java
 →遷移元画面主処理

・SubActivity.java
 →遷移先画面主処理

・main.xml
 →遷移元画面レイアウト。
  ボタン(button1)が一つあるだけ。

・sub.xml
 →遷移先画面レイアウト。
  ボタン(button1)が一つあるだけ。

を用意してあります。
レイアウトは基本的にボタンがくっついてるだけで、
主処理はボタンを押すと画面を遷移するだけ。
私が試したサンプルはこんな感じφ(--)

◆MainActivity.java
 public class MainActivity extends Activity {
  private Button btn;
  
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
 
   //ボタンクリックイベントリスナー
   btn = (Button) findViewById(R.id.button1);
   btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
     //ボタンクリック時の動作
     btn1Click();
    }
   });
  }
  
  //ボタンクリック時の動作
  private void btn1Click(){

   //インスタンス作成
   Intent intent = new Intent(this,SubActivity.class);
 
   //サブ画面起動
   startActivityForResult(intent,0);

  }
 
  // サブ画面から戻ってきた際に呼び出されるメソッド
  @Override
  protected void onActivityResult(int requestCode, int resultCode,Intent data){
   Log.d("main", "onActivityResult");
  }
  
 }

◆SubActivity.java
 public class SubActivity extends Activity {
  private Button btn;
  
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.sub);
 
   //ボタンクリックイベントリスナー
   btn = (Button) findViewById(R.id.button1);
   btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
     //ボタンクリック時の動作
     btn1Click();
    }
   });
  }
 
  //ボタンクリック時の動作
  private void btn1Click(){

   //インスタンス作成
   Intent intent = new Intent();
   
   //戻り値設定
   setResult(RESULT_OK, intent);
   
   //サブ画面終了
   finish();

  }
 }


んでまぁ、ポイントはこんな感じφ(--)

1.遷移先を呼び出す
 //インスタンス作成
 Intent intent = new Intent(this,
SubActivity.class);

 //サブ画面起動
 startActivityForResult(intent,0);


 「SubActivity.class」の部分で呼び出す画面(と言うかクラス)を指定しています。
 前回書いた『「AndroidManifest.xml」にアクティビティを追加する』をやっておかないと
 ここでエラーになりますのでご注意を。

2.遷移元に戻る
 //インスタンス作成
 Intent intent = new Intent();

 //戻り値設定
 setResult(RESULT_OK, intent);

 //サブ画面終了
 finish();


 戻り値返すのにあれやこれやしていますが、
 終了だけなら「finish();」です。分かりやすいですね。

画面「遷移」って言っちゃうから紛らわしいのですが、
イメージ的には新しいウィンドウを開いているだけです。
メイン画面→サブ画面の遷移は新しいウィンドウを開いて
メイン画面さんはサブ画面さんの後ろに隠れちゃうだけ。
サブ画面→メイン画面の遷移はサブ画面さんが自分を終了して
後ろに隠れていたメイン画面さんがひょっこりこんにちはするだけです。

あっ、忘れていましたが
「MainActivity.java」の「onActivityResult()」は
サブ画面からメイン画面に戻った時に呼ばれます。
サブ画面からの戻り値拾って~とかはここら辺でどーぞ。
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:Android  thema:プログラミング - genre:コンピュータ  Posted by ササキマコト 

  関連記事