簡體   English   中英

捕獲 EditText 失去焦點

[英]Capturing EditText Lost Focus

我是一個長期自學的業余 VB 程序員,現在正試圖同時自學 Java 和 Android。 我這樣說是為了讓你知道我不會說好行話,而且對這兩種追求非常陌生。

我開發了一個 Android 表單,該表單具有一系列 EditText 框,一旦用戶填寫,我希望將每個框的內容保存到一個數組中。如果用戶按下 Enter 鍵,我已經知道如何做到這一點。 但是,人們實際上並沒有這樣做:他們單擊框,鍵入,然后單擊下一個元素。

我是 VB,我可以為 lostfocus 事件編寫代碼。 但是我在Java中找不到類似的方法。

最后一個問題:有沒有辦法在 EditText 失去焦點時捕獲,所以我可以在不依賴 Enter 鍵的情況下以該類型保存鍵入的數據?

public boolean onKey(View v, int keyCode, KeyEvent event) { 
    if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)){ 
        Editable wasted=edittext_asset.getText(); 
        vehdata[vehNo][Integer.parseInt((String) edittext_asset.getTag())]=wasted.toString(); 
        return true; 
    } 
    return false; 
} 

請記住,我對此很陌生,以至於我經常不確定在哪里放置代碼片段以使其工作(新文件?oncreate 方法?誰知道)。 您能給我的任何指導將不勝感激並永遠感激。

讓我們按零件 go :

  • “我可以為 lostfocus 事件編寫代碼。但我在 Java 中找不到類似的方法。”:看看OnFocusChangeListener API
  • “有沒有辦法在 EditText 失去焦點時捕獲”:是的,使用上面的偵聽器和abstract void onFocusChange(View v, boolean hasFocus)
  • “請記住,我對此很陌生”:我們在某些時候都是新手:) 如果您尊重並回饋社區(通過答案,或者只是投票贊成/反對並接受答案) ,沒什么好擔心的。

然后還有一些:

我和你一樣自學,所以我現在感覺到你的痛苦,現在我想給你一些建議,你從 android 開始:你添加了兩個標簽: 桌面 java 的編碼與 android 設備的編碼完全不同,因此請考慮到這一點。 你真的要在 java 或 android 中編碼嗎? 除了 API 有一些明顯的區別外,主要區別在於用戶交互。 大多數 java 程序需要全鍵盤和 static 屏幕,而 android 應用程序依賴於觸摸,這是一個關鍵區別。

觸摸很重要,因為如果沒有在其他視圖上獲得焦點,通常不會失去焦點。 典型的 EditText 將在 IME 上用手指填充,並且該 View 將保持焦點,直到同一手指觸摸另一個 View(可能是 EditText,可能是 Button)。 在“窗口”之外通常沒有點擊。

另一方面,在 android 設備中,您期望單個用戶,而不是桌面中未知數量的用戶。 因此,保存數據和檢索數據的處理方式完全不同(例如, 使用保存實例 State 保存 Android 活動 state

您可以選擇捕獲焦點的獲得/失去以執行操作,或者等到單擊按鈕,甚至使用其他方法(例如TextWatcher來保存每個字符輸入的數據)。 因此,您有很多選擇來設計您的應用程序。 困難的部分是巧妙地設計。

祝你好運!

我剛剛完成了類似的事情。 我通過創建一個 for 循環來處理它,該循環只通過 id 獲取每個 edittext 的內容並將其文本添加到數組中。 我在 onclick 方法中執行此操作,因為我在用戶單擊按鈕后完成了所有操作。

String ohhai;
String duh = et.getText().toString();
int number = Integer.parseInt(duh);
List<String> myCollection=new ArrayList<String>();
EditText stuff;
int editt;
String loggy;
for(int z = 0; z < number; z++){
    stuff = (EditText)findViewById(z);
    editt = stuff.getId();
    loggy = Integer.toString(editt);
    Log.e("How Many", loggy);
    ohhai = stuff.getText().toString();
    myCollection.add(ohhai);
}

String [] arr = myCollection.toArray(new String[myCollection.size()]);
String separator = "0";
StringBuffer result = new StringBuffer();
if (arr.length > 0) 
   result.append(arr[0]);
for (int h=1; h < arr.length; h++) {
    result.append(separator);
    result.append(arr[h]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM