내 응용 프로그램에 많은 대화 상자 창이 있습니다. 소스가 압도적 인 것처럼 보입니다. Dialog 소스를 분리하는 가장 좋은 방법에 대한 의견을 찾고 있습니다. 나는 Java에 비교적 익숙하지 않기 때문에 별도의 클래스에 넣을 수 있다고 가정하고 있습니다. 그러나, 안드로이드에서 이것을하는 정확한 방법은 나를 암시한다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?애플리케이션에서 Android 대화 소스를 구성하는 방법은 무엇입니까?
1
A
답변
1
다음과 같이 대화를 확장하여 대화를 만들 수 있습니다. 1. customDialog에 대한 Layout.xml을 만듭니다. 보기가 포함 된 새 레이아웃을 만듭니다. 이 예제에서는 edittext와 button을 사용했습니다.
사용자 정의 대화 상자 클래스 만들기
<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>
. a. 대화 상자 클래스를 확장하는 클래스 만들기 b. 이벤트 처리기 인터페이스를 구성원으로 작성하십시오. c. onCreate 메소드에서 사용자 정의 레이아웃을 사용하십시오.<?xml version="1.0" encoding="utf-8"?>
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를 만들고
공용 클래스 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()을 구현; } } }
난 당신이 좀 더 문제를 지정한 경우 도움이 될 것 같아요. 앱에 몇 개의 활동이 있습니까? 대화 상자 각각 하나의 활동에 특정, 또는 다른 활동에서 열 수있는 대화 상자가 있습니까? – Cephron
모든 대화 창은 하나의 활동과 관련이 있으며 대화 창 외부에서 액세스 할 수 없습니다. 모든 대화 상자를 편리하게 캡슐화하는 영리한 방법을 찾고 있습니다. 어떤 도움이라도 좋을 것입니다, 고마워요! – mas