rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

android開発 シンプルなダイアログ表示


package YOUR.PACKAGE.alertdialogsample;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity {

Button button_dialog1, button_dialog2, button_dialog3;
private TextView text_view;
private FragmentManager flagmentManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

text_view = findViewById(R.id.text_view);
button_dialog1 = findViewById(R.id.button_dialog1);
button_dialog2 = findViewById(R.id.button_dialog2);
button_dialog3 = findViewById(R.id.button_dialog3);


// button_dialog1ボタンタップでAlertを表示させる
button_dialog1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
flagmentManager = getSupportFragmentManager();

// DialogFragment を継承したAlertDialogFragment1のインスタンス
AlertDialogFragment1 dialogFragment = AlertDialogFragment1.newInstance(100);
// DialogFragmentの表示
dialogFragment.show(flagmentManager, "test alert dialog1");
}
});


// button_dialog2ボタンタップでダイアログのメッセージを変えたAlertを表示させる
// newInstance()への引数を変更してメッセージを変える
button_dialog2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
flagmentManager = getSupportFragmentManager();

// DialogFragmentを継承したAlertDialogFragment2のインスタンス
AlertDialogFragment1 dialogFragment = AlertDialogFragment1.newInstance(200);
// DialogFragmentの表示
dialogFragment.show(flagmentManager, "test alert dialog2");
}
});


// button_dialog3ボタンタップでItemを選択するAlertを表示させる
button_dialog3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
flagmentManager = getSupportFragmentManager();

// DialogFragment を継承したAlertDialogFragmentのインスタンス
AlertDialogFragment2 dialogFragment = new AlertDialogFragment2();
// DialogFragmentの表示
dialogFragment.show(flagmentManager, "test alert dialog");
}
});
}


public void setTextView(String message){
text_view.setText(message);
}


/*
* DialogFragmentを継承したクラスAlertDialogFragment1
*/
public static class AlertDialogFragment1 extends DialogFragment {

/*
* コンストラクタを記述してはならない。
* newInstance()でのsetArguments、onCreateDialog()でのgetArgumentsを利用する。
*/
public static AlertDialogFragment1 newInstance( int requestCode) {
AlertDialogFragment1 fragment = new AlertDialogFragment1();

Bundle arguments = new Bundle();
arguments.putInt("reqCode", requestCode);
fragment.setArguments(arguments);

return fragment;
}

@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {

int requestCode = getArguments().getInt("reqCode");

AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());

switch (requestCode) {
case 100:
alert.setTitle("Test AlertDialog1");
alert.setMessage("Message is 100");
break;

case 200:
alert.setTitle("Test AlertDialog2");
alert.setMessage("Message is 200");
break;

}
alert.setPositiveButton(R.string.dialog_ok, null);

return alert.create();
}
}


/*
* DialogFragmentを継承したクラスAlertDialogFragment2
*/
public static class AlertDialogFragment2 extends DialogFragment {
// 選択肢のリスト
private String[] menulist = {"選択(1)","選択(2)","選択(3)"};

@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {

AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());

alert.setTitle("Test AlertDialog3");
alert.setItems(menulist, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int idx) {
// 選択1
if (idx == 0) {
setMassage(menulist[0]);
}
// 選択2
else if (idx == 1) {
setMassage(menulist[1]);
}
// 選択3, idx == 2
else{
setMassage(menulist[2]);
}
}
});
return alert.create();
}


private void setMassage(String message) {
MainActivity mainActivity = (MainActivity) getActivity();
if (mainActivity != null) {
mainActivity.setTextView(message);
}
}
}
}