2012-01-04 130 views
1

我有一個藍牙條形碼掃描儀連接到我的平板電腦。每當我掃描一個條形碼,並且焦點位於我的應用程序的編輯文本框中時,掃描的數據就會出現在編輯文本中。android-獲取數據,因爲它從外部鍵盤輸入

我想在編輯文本中同時提取這些數據。我曾嘗試使用setOnClickListener,setOnKeyListener。如果有人知道,請告訴我。

編輯: 的步驟,我下面:

  1. 我的程序有一個簡單的編輯文本,一個按鈕,一個文本框。

  2. 通過硬件輸入掃描條形碼時,數據被插入到我的程序的編輯文本中。

  3. 點擊按鈕,我將編輯文本內容複製到文本框中。

我想我的應用程序做什麼:

由於作爲數據出現在編輯文本很快,我想將它複製到文本框中。現在我正在按按鈕的點擊。

這是我的代碼:我懷疑它是否有用,因爲外部硬件在編輯文本本身顯示數據。

public class SimpleTextBoxActivity extends Activity {

Button btnClear, btnPairedList, btnAvailableList, btnPairedAvailableList,btnShowScan; 

EditText edtSacnnedData; 
BroadcastReceiver brSent; 
TextView txtShowScannedData; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    edtSacnnedData=(EditText) findViewById(R.id.edtData); 
    btnClear=(Button) findViewById(R.id.btnClear); 
    btnShowScan=(Button) findViewById(R.id.btnScannedText); 
    txtShowScannedData=(TextView) findViewById(R.id.txtScanData); 

    Log.d("my", "b4 set visibility"); 
    edtSacnnedData.setBackgroundColor(Color.BLACK); 

    Log.d("my", "after set visibility"); 
    btnClear.setOnClickListener(new OnClickListener() {   
     @Override 
     public void onClick(View v) { 
      edtSacnnedData.setText(""); 
      txtShowScannedData.setText(""); 
     } 
    }); 
    btnShowScan.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String str=edtSacnnedData.getText().toString(); 
      txtShowScannedData.setText(str); 
      edtSacnnedData.setText(""); 
     } 
    }); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy();  
} 

}

+0

請詳細描述一下嗎? – 2012-01-04 06:28:11

+0

任何代碼示例? – 2012-01-04 06:33:45

+0

可以請您 分享代碼 – 2012-01-04 07:16:48

回答

2

您需要使用addTextChangedListener(..)可能對您有所幫助。這裏有關於這個有趣的討論的鏈接。 Text changed listener

0

試圖找到你的類editText.setText(數據)的代碼。

無論在你的editText的setText()方法的括號中,那是你的數據,你可以從這裏使用它。

如果我的假設是錯誤的,請分享您的代碼。

+0

數據自己出現,我沒有爲它做任何額外的事情。將掃描數據插入某個可編輯文本框是硬件的特性。 – Pallavi 2012-01-04 07:06:37

+0

但是應用程序是你的。它顯示特定編輯文本,硬件角色數據的代碼只是將字節傳遞給android手機,而不是顯示在任何edittext本身上。如果你可以分享你的應用程序代碼,我會指出我在說什麼。 – 2012-01-04 07:10:54

+0

已經發布了代碼......我根本沒有做任何事情......硬件的設計方式是直接將數據輸入到編輯文本中。 – Pallavi 2012-01-04 07:39:18

0

給你的用戶界面設計一些編號,並完成工作。我向你展示一個例子。

EditText editText; 
TextView textView; 

editText = (EditText) findViewById(R.id.editText); 
textView = (TextView) findViewById(R.id.textView); 

editText.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      textView.setText(editText.getText().toString()); 

     } 
    }); 

在上面的例子中,一旦你移動你的聚焦,TextView的將被更新,否則你也可以使用:

editText.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      textView.setText(editText.getText().toString()); 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 
    }); 

這僅僅是一個例子。你可以給你自己的ID和名字。