2012-01-04 2 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

자세히 알려주십시오. –

+0

코드 샘플? –

+0

할 수 있습니까? 코드를 공유하십시오 –

답변

2

addTextChangedListener (..)를 사용해야합니다. 도움이 될 수 있습니다. 여기에 대한 흥미로운 토론을위한 링크입니다. Text changed listener

0

봅니다 클래스에서 해당 editText.setText (데이터) 코드를 찾을 수 있습니다.

해당 editText의 setText() 메소드의 괄호 안에있는 것은 무엇이든 그것은 데이터이므로 여기에서 사용할 수 있습니다.

제 생각이 틀리면 코드를 알려주십시오.

+0

데이터가 자체에 표시됩니다. 그 어떤 것도 수행하고 있지 않습니다. 스캔 한 데이터를 편집 가능한 텍스트 상자에 삽입하는 것은 하드웨어의 속성입니다. – Pallavi

+0

하지만 앱이 너의 것이다. 특정 편집 텍스트의 데이터를 보여주는 코드는 하드웨어 역할만으로 Android 폰에 바이트를 전달하지만 편집 텍스트 자체에는 표시되지 않습니다. 앱 코드를 공유 할 수 있다면 내가 말하는 바를 지적 할 것이다. –

+0

은 코드를 게시했습니다 ... 나는 어떤 것도하지 않고 있습니다 ... 하드웨어는 데이터를 편집 텍스트에 직접 입력하는 방식으로 설계되었습니다. – Pallavi

0

UI 디자인에 일부 ID를 부여하고 작업을 수행하십시오. 나는 너에게 모범을 보이고있다. 빨리 당신이 당신의 텍스트 뷰가 업데이트됩니다 초점을 이동하거나 다른 사람도 사용할 수 위의 예에서

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()); 

     } 
    }); 

는 :

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 

     } 
    }); 

이건 그냥 예입니다. 당신은 자신의 이드와 이름을 줄 수 있습니다.

관련 문제