画面遷移をする

android-cange-scene.png

Intentを使って画面遷移する方法は複数のActivityのページヘ

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);
 
}
 
}

サポートサイト Wikidot.com