次のようにダイアログを拡張してダイアログを作成することができます 1. customDialogのLayout.xmlを作成します ビューを含む新しいレイアウトを作成します。この例では、私はedittextとボタンを使用しています。
カスタムダイアログクラスを作成します
<EditText android:id="@+id/EditText01" android:layout_height="wrap_content" android:text="Enter your name" android:layout_width="250dip"></EditText>
<Button android:id="@+id/Button01" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="click"></Button>
<?xml version="1.0" encoding="utf-8"?>
。 a。ダイアログクラスを拡張するクラスを作成する b。イベントハンドラインターフェイスをメンバとして作成する c。 onCreateメソッドでカスタムレイアウトを使用します。 public class MyCustomDialog extends Dialog {
public interface ReadyListener {
public void ready(String name);
}
private String name;
private ReadyListener readyListener;
EditText etName;
public MyCustomDialog(Context context, String name,
ReadyListener readyListener) {
super(context);
this.name = name;
this.readyListener = readyListener;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mycustomdialog);
setTitle("Enter your Name ");
Button buttonOK = (Button) findViewById(R.id.Button01);
buttonOK.setOnClickListener(new OKListener());
etName = (EditText) findViewById(R.id.EditText01);
}
private class OKListener implements android.view.View.OnClickListener {
@Override
public void onClick(View v) {
readyListener.ready(String.valueOf(etName.getText()));
MyCustomDialog.this.dismiss();
}
}
}
MainActivityを作成し
CustomDialogを実装パブリッククラスMainActivityアクティビティ{ /**活性が最初に作成されたときに呼び出さを拡張します。 */ @Override パブリックボイドonCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); MyCustomDialog myDialog = new MyCustomDialog(this、 ""、 新しいOnReadyListener()); myDialog.show(); }プライベートクラスOnReadyListener)は(MyCustomDialog.ReadyListener { @Override公共ボイドレディ(文字列名){ Toast.makeText(MainActivity.this、名前、Toast.LENGTH_LONG).SHOWを実装します。 }} }
私はあなたが少しより多くのあなたの問題を指定した場合、それが役立つだろうと思います。あなたのアプリにはいくつのアクティビティがありますか?ダイアログはそれぞれ1つのアクティビティに固有のものか、または異なるアクティビティから開くことができるダイアログですか? – Cephron
すべてのダイアログウィンドウは1つのアクティビティに関係し、その外部にはアクセスできません。私は便利な方法ですべてのダイアログウィンドウをカプセル化する巧妙な方法を探しています。どんな助けも素晴らしいだろう、ありがとう! – mas