2012-02-24 3 views
1

내 응용 프로그램에 많은 대화 상자 창이 있습니다. 소스가 압도적 인 것처럼 보입니다. Dialog 소스를 분리하는 가장 좋은 방법에 대한 의견을 찾고 있습니다. 나는 Java에 비교적 익숙하지 않기 때문에 별도의 클래스에 넣을 수 있다고 가정하고 있습니다. 그러나, 안드로이드에서 이것을하는 정확한 방법은 나를 암시한다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?애플리케이션에서 Android 대화 소스를 구성하는 방법은 무엇입니까?

+1

난 당신이 좀 더 문제를 지정한 경우 도움이 될 것 같아요. 앱에 몇 개의 활동이 있습니까? 대화 상자 각각 하나의 활동에 특정, 또는 다른 활동에서 열 수있는 대화 상자가 있습니까? – Cephron

+0

모든 대화 창은 하나의 활동과 관련이 있으며 대화 창 외부에서 액세스 할 수 없습니다. 모든 대화 상자를 편리하게 캡슐화하는 영리한 방법을 찾고 있습니다. 어떤 도움이라도 좋을 것입니다, 고마워요! – mas

답변

1

다음과 같이 대화를 확장하여 대화를 만들 수 있습니다. 1. customDialog에 대한 Layout.xml을 만듭니다. 보기가 포함 된 새 레이아웃을 만듭니다. 이 예제에서는 edittext와 button을 사용했습니다.

  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를 만들고

    공용 클래스 MainActivity가 활동 { /** 호출 활동이 처음 만들어 확장 CustomDialog를 구현합니다. */ @Override public void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.main); MyCustomDialog myDialog = new MyCustomDialog (this, "", new OnReadyListener()); myDialog.show(); } 개인 클래스 OnReadyListener는 MyCustomDialog.ReadyListener { @Override 공공 무효 준비 (문자열 이름) { Toast.makeText (MainActivity.this, 이름, Toast.LENGTH_LONG을) .show()을 구현; } } }

관련 문제