2012-02-24 8 views
1

私のアプリケーションには多くのダイアログウィンドウが含まれています。ソースが圧倒的に思えるようになった。 Dialogソースを分離するための最良の方法についての意見を探しています。私はJavaに比較的新しいので、別のクラスに入れることができると仮定しています。しかし、Androidでこれを行う正確な方法は私を暗示しています。誰かが私を正しい方向に向けることができますか?Androidのダイアログソースをアプリケーションでどのように整理すればよいですか?

+1

私はあなたが少しより多くのあなたの問題を指定した場合、それが役立つだろうと思います。あなたのアプリにはいくつのアクティビティがありますか?ダイアログはそれぞれ1つのアクティビティに固有のものか、または異なるアクティビティから開くことができるダイアログですか? – Cephron

+0

すべてのダイアログウィンドウは1つのアクティビティに関係し、その外部にはアクセスできません。私は便利な方法ですべてのダイアログウィンドウをカプセル化する巧妙な方法を探しています。どんな助けも素晴らしいだろう、ありがとう! – mas

答えて

1

次のようにダイアログを拡張してダイアログを作成することができます 1. customDialogのLayout.xmlを作成します ビューを含む新しいレイアウトを作成します。この例では、私はedittextとボタンを使用しています。

  1. カスタムダイアログクラスを作成します

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

    }

  2. 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を実装します。 }} }

関連する問題