2017-12-13 4 views
-2

바코드를 스캔하여 화면에 몇 초 동안 표시하는 프로젝트를 만듭니다. 바코드를 스캔하면 화면에 바코드 값이 표시되고이 값은 몇 초 후에 나타납니다. 나는 텍스트보기에서 가치를 보여 주려고하지만 나는 기울어 져있다. 나는 이것을 텍스트보기에서 보여주고 싶다. 어떤 몸이라도 그것에 관해 나를 안내 해주세요. 내가 안드로이드 스튜디오 여기텍스트보기에서 바코드의 값을 표시하는 방법

에 새로운 오전 당신이 스캔 한 바코드를 토스트 onActivityResult

package example.zxing; 

import android.app.Activity; 
import android.app.Fragment; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.google.zxing.integration.android.IntentIntegrator; 
import com.google.zxing.integration.android.IntentResult; 


public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

// TextView textView = (TextView)findViewById(R.id.scannedbarcode); 
// 
// public void setTextView(TextView textView) { 
//  this.textView = textView; 
// } 

public void scanBarcode(View view) { 
    new IntentIntegrator((Activity)this).initiateScan(); 
} 

public void scanBarcodeCustomOptions(View view) { 
    IntentIntegrator integrator = new IntentIntegrator(this); 
    integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES); 
    integrator.initiateScan(); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent 
data) { 
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, 
resultCode, data); 
    if(result != null) { 
     if(result.getContents() == null) { 
      Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); 
     } else { 
      Toast.makeText(this, "Scanned: " + result.getContents(), 
Toast.LENGTH_LONG).show(); 
     } 
    } else { 
     // This is important, otherwise the result will not be passed to the 
fragment 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 

/** 
* Sample of scanning from a Fragment 
*/ 
public static class ScanFragment extends Fragment { 
    private String toast; 

    public ScanFragment() { 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     displayToast(); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_scan, container, 
false); 
     Button scan = (Button) view.findViewById(R.id.scan_from_fragment); 
//   TextView textView = (TextView) 
findViewById(R.id.scannedbarcode); 
//   textView.setText("text you want to display"); 
     scan.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       scanFromFragment(); 
      } 
     }); 
     return view; 
    } 

    public void scanFromFragment() { 
     IntentIntegrator.forFragment(this).initiateScan(); 
    } 

    private void displayToast() { 
     if(getActivity() != null && toast != null) { 
      Toast.makeText(getActivity(), toast, Toast.LENGTH_LONG).show(); 
      toast = null; 
     } 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent 
data) { 
     IntentResult result = 
IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
     if(result != null) { 
      if(result.getContents() == null) { 
       toast = "Cancelled from fragment"; 
      } else { 
       toast = "Scanned from fragment: " + result.getContents(); 
      } 

      // At this point we may or may not have a reference to the 
activity 
      displayToast(); 
     } 
    } 
} 
} 
+0

문자열이 texttext로 설정됩니다. Prob는 무엇입니까? – ADM

+0

설정 방법을 이해할 수 없습니다. 코드 을 통해 안내해주세요. –

답변

1
public class MainActivity extends Activity { 

private TextView textView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    textView = (TextView)findViewById(R.id.scannedbarcode); 
} 

다음 내 코드이 수행

textView.setText("SCANNED: "+result.getContents()); 
+0

감사합니다. 작동하지 않습니다. 내가 바코드를 스캔하면 몇 초 후에 표시됩니다. 텍스트보기에 표시되지 않습니다. –

0

그냥 광고 텍스트보기를 너의 activty의 xml. 텍스트보기를 찾고 스캔 한 결과를 텍스트보기로 설정하십시오. onActivityResult를 GET 내용에

public class MainActivity extends AppCompatActivity { 
private TextView mTextView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_new); 
    mTextView = (TextView) findViewById(R.id.yourtextViewId); 
} 
} 

볼을 텍스트로 할당합니다.

if(result.getContents() != null) { 
     mTextView.setText(String.valueOf(result.getContents())); 
    } 
+0

.setText로 오류가 발생했습니다. 정적 인 컨텍스트에서 'setText (java.lang.CharSequence)'를 참조 할 수 없습니다. –

+0

동일한 클래스에서 동일한 인스턴스를 사용하는 경우 어떻게 가능합니까? 비 정적 메소드. mTextView.setText() 또는 다른 것을 시도 했습니까? – ADM

+0

나는 이것을 시험하고있다. mTextView.setText (String.valueOf (result.getContents())); –

관련 문제