[英]How to get information from an edit text that is entered by the user and move it to another activity as a TextView
[英]Android - how can an Activity get user entered text from a Dialog
我認為這很容易,但它讓我望而卻步。 我有一個Activity,它顯示一個自定義對話框,允許用戶輸入一些文本,然后定義OK和Cancel按鈕。 我用show()顯示它。 但我無法弄清楚如何從Dialog中獲取價值。
我正在使用自定義對話框,因為它對文本條目進行了一些驗證。 我想我可以將它改為派生自Activity然后使用startActivityForResult顯示它,但至少基於我以前的舊Windows編程日 - 我認為從Android對話框中獲取用戶輸入的值很容易。
我是否忽略了某種類型的回叫或聽眾機制?
我甚至試過這個作為一個簡單的解決方案,但它不讓我分配值(1),除非它的修飾符設置為final,然后(2)如果我說確定使其成為最終,不會讓我分配給它因為“無法分配最終的局部變量值,因為它是在封閉類型中定義的“
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更新解決方案] ============================
我最終做的主要是添加將Handler傳遞給對話框的功能。 在對話框類中我添加了:
private Handler clientHandler = null;
public void AddHandler(Handler client)
{
this.clientHandler = client;
}
並更新了Dialog的OK按鈕,點擊:
/**
* 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();
}
然后在Activity的onCreate()中顯示我添加的Dialog:
tagDialog = new tagDialog(this);
tagHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
tag = tagDialog.tag;
}
};
tagDialog.AddHandler(tagHandler);
在Dialog
onClickListener
中保存要保存的內容。 使用dialog.findViewById()
查找文本框,將文本保存到某處(或使用Handler),然后在Activity中檢索保存的文本。
除非我在這里遺漏了什么,否則靜態字符串不會嗎?
聽起來您想要向處理程序發送消息。 使用obtainMessage()獲取Message對象,然后通過消息隊列將Message發送給Handler。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.