DialogFragment.dismiss

DialogFragment.dismissで、ダイアログを非表示にする。

DialogFragment  |  Android Developers

CustomAsyncTask.javaを追加し、

コンストラクタでCustomDialogFragmentオブジェクトcdfを受け取って、10秒経ったら、cdf.dismissを呼んでダイアログを非表示。
CustomDialogFragment.javaは、

CustomDialogFragment上のButton1を押すと、非同期処理が始まって、あとは先程の処理が行われる。

起動時
起動時

起動時。
Button1押して、

ダイアログが出るのでここでもButton1を押す
ダイアログが出るのでここでもButton1を押す

ダイアログが出るのでここでもButton1を押す。
で10秒経つと、

このようにダイアログが非表示になる
このようにダイアログが非表示になる

このようにダイアログが非表示になる。

Sample/android/DialogFragment/dismiss/src/DialogFragment at master · bg1bgst333/Sample · GitHub

DialogFragment.onCancel

DialogFragment.onCancelに、ダイアログがキャンセルされた時の処理を書く。

DialogFragment  |  Android Developers

CustomDialogFragment.javaで、

onCreateViewでレイアウトを指定するバージョンに戻してる。
onCancelが呼ばれたら、"onCancel"をToast表示。

起動時
起動時

起動時。
Button押すと、

以前のレイアウトに戻してる
以前のレイアウトに戻してる

以前のTextView1とButton1のレイアウトに戻ってる。
この場合は、ダイアログ外を押すと、キャンセルになる。
キャンセルで、

onCancelが呼ばれたのがわかる
onCancelが呼ばれたのがわかる

onCancelが呼ばれたのがわかる。

Sample/android/DialogFragment/onCancel/src/DialogFragment at master · bg1bgst333/Sample · GitHub

DialogFragment.onCreateDialog

DialogFragmentで、ダイアログを作る方法は2種類ある。
ひとつは、onCreateViewでダイアログ内部のレイアウトを作りViewを返すというもの。
strings.xmlで、

ActivityのButton1、Fragmentの中のButton1、TextView1。
fragment_custom_dialog.xmlで、

Fragment側にTextViewとButtonを配置。
activity_main.xmlで、

Activity側はButtonだけ。
CustomDialogFragment.javaで、

package com.bgstation0.android.sample.dialogfragment_;

import android.app.DialogFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class CustomDialogFragment extends DialogFragment {

	// ビュー生成時.
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
		
		// レイアウトからビュー生成.
		return inflater.inflate(R.layout.fragment_custom_dialog, container);	// infalter.inflateでR.layout.fragment_custom_dialogを元にビューを作成し, 返す.
		
	}
	
}

onCreateView内で、R.layout.fragment_custom_dialogから、Viewを作成して返す。
(onCreateViewはDialogFragment派生じゃなくて、Fragment派生なのね。)
MainActivity.javaで、

CustomDialogFragmentにしたぐらいで変わってない。

起動時
起動時

起動時。
Buttonを押すと、

レイアウトに指定したTextView1とButton1が配置されたダイアログ
レイアウトに指定したTextView1とButton1が配置されたダイアログ

レイアウトに指定したTextView1とButton1が配置されたダイアログが表示される。
Button1は押しても何も起きない。

もうひとつの方法は、onCreateDialogの中で、AlertDialogでもDialogでも生成して、返すというもの。

DialogFragment  |  Android Developers

onCreateDialogを使う場合、

onCreateViewはコメントアウト
AlertDialogにして、PositiveButton押されたら"OK"とToast表示。

起動時
起動時

起動時。
Button押すと、

レイアウト関係なくしっかりとしたAlertDialog
レイアウト関係なくしっかりとしたAlertDialog

レイアウト関係なくしっかりとしたAlertDialog。
OK押すと、

"OK"とToast表示
"OK"とToast表示

ダイアログが閉じられて、"OK"とToast表示。

Sample/android/DialogFragment/onCreateDialog/src/DialogFragment at master · bg1bgst333/Sample · GitHub

DialogFragment.show

DialogFragment.showで、ダイアログを表示する。

DialogFragment  |  Android Developers

DialogFragmentは継承することが多いが、継承しなくても一応表示できる。
strings.xmlで、

ここでもButton1。
activity_main.xmlで、

Button1配置。
MainActivity.javaで、

showには、getFragmentManagerで得たFragmentManagerオブジェクトとタグ文字列を渡す。

起動時
起動時

起動時。
Button1をクリックで、

やはりレイアウトが無いのでこうなる
やはりレイアウトが無いのでこうなる

やはりレイアウトが無いのでこうなる。

Sample/android/DialogFragment/show/src/DialogFragment at master · bg1bgst333/Sample · GitHub

Dialog

Dialogについてやってなかったので、ここで。
まあ、ダイアログだけなら、AlertDialogである必要は無いみたい。

Dialog  |  Android Developers

strings.xmlで、

テキストはButton1。
activity_main.xmlで、

Button1を配置。
MainActivity.javaで、

onCreateDialogでDialogオブジェクトを生成して返して、Button1がクリックされたら、showDialogだけ。

起動時
起動時

起動時。
Button1をクリックすると、

レイアウトが無くても一応ダイアログはこうやって出る。
レイアウトが無くても一応ダイアログはこうやって出る。

レイアウトが無くても一応ダイアログはこうやって出る。

Sample/android/Dialog/Dialog/src/Dialog at master · bg1bgst333/Sample · GitHub

ListFragment.onListItemClick

ListFragmentもonListItemClickでクリック処理。

ListFragment  |  Android Developers

CustomListFragment.javaで、

Toast.makeTextの第1引数に指定するものは、ListActivityはthisだったが、ListFragmentの場合はgetActivity。

起動時
起動時

起動時。
一番上をクリックで、

"Taro"と出る
"Taro"と出る

"Taro"と出る。

Sample/android/ListFragment/onListItemClick/src/ListFragment at master · bg1bgst333/Sample · GitHub

ListActivity.onListItemClick

ListActivityにおいては、onListItemClickで、アイテムクリック時の処理をする。

ListActivity  |  Android Developers

MainActivity.javaで、

onListItemClickをオーバーライドして、Toast表示。
引数にListViewのlが渡されるので、l.getItemAtPositionを使ってアイテム取得。

起動時
起動時

起動時。
真ん中のSaburoをクリック。

"Saburo"が出る
"Saburo"が出る

"Saburo"が出る。

Sample/android/ListActivity/onListItemClick/src/ListActivity at master · bg1bgst333/Sample · GitHub