Android:画面遷移

本物のページはこちら→change-scene

Included page "android:change-scene" does not exist (create it now)

setContentView()のidを変えるだけの方法

手順

  1. layoutフォルダを右クリック->New->「Android XML File」

setContentView(R.layout.input_dialog);

で他のダイアログのxmlファイルを指定するだけ!!
最初の画面がMainActivityだとする。
画面を遷移したいなら、他のActivityを作る。(少し待たされるらしい)setContentViewの方がいいらしい。
ポップアップとして出したいならDialogを作る。
だがしかし、この方法では画面から復帰した時に、セットしたものがパーになる。
onCreate内でprocessしたXMLファイルのみにしか使えない。
からだそうだ。

各ダイアログごとに各クラスを設ける方法(推奨)。

Layoutを明示的にinflateして、View.findViewById()を使う
各ダイアログは各クラスになる。
参照

package com.example.popnselector;
 
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.app.Dialog;
public class StartDialog extends Dialog{
    MainActivity mActivity;
    View mView;
    StartDialog(Contents _obj){
    super(_obj);
        mActivity=(MainActivity)_obj;
        LayoutInflater layoutInflater = (LayoutInflater)mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mView  = layoutInflater.inflate(R.layout.activity_main, null, false);
        mActivity.setContentView(mView);
 
    }
 
}

部品の獲得

mViewを使う。

mShowSongButton = (Button)mView.findViewById(R.id.showSongButton);

各ダイアログクラス

そして各ダイアログにはDialogクラスを拡張したものを作る。
ダイアログを呼び出すときは、このクラスのshow()を呼び出す。
このクラスにonKeyDownを実装しても呼ばれないのでやめましょう。
onKeyDownはMainActivityで管理すること。

package com.example.popnselector;
 
import android.app.Dialog;
import android.content.Context;
 
public class ResultDialog extends Dialog{
    MainActivity mActivity;
    ResultDialog(Context _obj){
        super(_obj);
        mActivity=(MainActivity)_obj;
    }
    public void show(){
    mActivity.setContentView(R.layout.result_dialog);
    mResultText = (TextView)mActivity.findViewById(R.id.textViewResult);
 
}
 
}

Intent

Intentはアプリケーション間の連携機能で異なるアプリケーションを繋ぐランタイム(機能・モジュール)です。付加情報(配列や、文字列、整数型など)を別アプリケーションに通知でき、他のActivityの呼び出し方法としてよく使われます。

明示的Intent

Activityをクラス名で指定して呼び出す方法

暗黙的Intent

動作(振る舞い)で呼び出し、Activityは指定しない方法。

サポートサイト Wikidot.com