나는 이것이 쉬울 것이라고 생각했지만 나를 풀어 주었다. 사용자가 일부 텍스트를 입력 한 다음 확인 및 취소 단추가 정의되어있는 사용자 지정 대화 상자를 표시하는 활동이 있습니다. show()를 사용하여 표시합니다. 하지만 대화 상자에서 값을 다시 얻는 방법을 알 수는 없습니다.Android - 대화 상자에서 Activity가 사용자가 입력 한 텍스트를 얻는 방법
텍스트 입력의 유효성을 검사하기 때문에 사용자 지정 대화 상자를 사용하고 있습니다. 나는 액티비티에서 파생되도록 startActivityForResult를 사용하여 그것을 바꿀 수 있다고 생각한다. 적어도 나의 오래된 윈도우 프로그래밍 일에 기반한다. 안드로이드 대화 상자에서 사용자가 입력 한 값을 되 찾는 것이 쉽다.
일부 콜백 또는 리스너 메커니즘을 간과하고 있습니까?
나는 단순한 해결책으로 이것을 시도해 보았지만, 수식어가 final로 설정되어 있지 않으면 값 (1)에 할당하지 않고 (2) 최종으로 만들기 위해 ok라고 말하면, 할당하지 못하게한다.
String value;
final EditText input = (EditText)findViewById(R.id.theText);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(input);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
value = input.getText().toString();
dialog.dismiss();
}
});
builder.show();
[EDIT 용액 업데이트] 그것에 ============ "가 둘러싸 타입 정의되므로 최종 로컬 변수 값을 할당 할 수 없다"때문에
내가 한 일은 대화 상자에 처리기를 전달하는 기능을 추가하는 것이 었습니다. 대화 상자 클래스에 내가 추가 :
private Handler clientHandler = null;
public void AddHandler(Handler client)
{
this.clientHandler = client;
}
하고 대화 상자의 OK 버튼을 클릭 업데이트 : 대화 상자를 표시하는 활동의에서 onCreate()에서 다음
/**
* The user pressed the OK button
* @param v
*/
public void okClick(View v)
{
// save the entered string
this.tag = this.tagEditText.getText().toString();
if (null != this.clientHandler)
{
// Notify the client to update itself
this.clientHandler.sendMessage(clientHandler.obtainMessage());
}
cancel();
}
을 나는 추가 :
tagDialog = new tagDialog(this);
tagHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
tag = tagDialog.tag;
}
};
tagDialog.AddHandler(tagHandler);
이것들은 모두 훌륭한 제안 이었지만,이 문제는 내 문제를 해결하기 위해 올바른 길로 내려갔습니다. 대화 상자에서 데이터를 얻는 것이 쉽지 않은 것으로 밝혀졌습니다. 최종 솔루션에서 코드를 게시합니다. 모두에게 감사드립니다. – bursk