Zxing扫描后设置TextView没有做任何事情

时间:2018-03-01 14:53:00

标签: android zxing

我有一个简单的应用程序,我正在努力工作。问题是我无法在设置后显示TextView。我使用Zxing扫描条形码,我可以设置TextView,但它不会显示在我的手机上。它只显示默认值。

当我说“set”时,我的意思是在运行textview.setText()之后,textview的值确实会改变,但是屏幕上的值不会改变。

我添加了一些评论,以帮助您了解应用的位置。

scanCode是我尝试设置textview的地方。我也试过使用runOnUiThread并且仍然有相同的结果

import android.os.Handler;
import android.os.Looper;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.w3c.dom.Text;

import com.google.zxing.Result;
import me.dm7.barcodescanner.zxing.ZXingScannerView;

public class MainActivity extends AppCompatActivity {

TextView itemNameTextView;
TextView itemPriceTextView;
Button scanButton;

ZXingScannerView scannerView;

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

    itemNameTextView =  findViewById(R.id.itemNameTextView);
    itemPriceTextView = findViewById(R.id.itemPriceTextView);
    scanButton = findViewById(R.id.scanButton);
    scannerView = new ZXingScannerView(this);


}

public void scanCode(View view){

    setContentView(scannerView);
    scannerView.startCamera();

    scannerView.setResultHandler(new ZXingScannerView.ResultHandler() {
        @Override
        public void handleResult(Result result) {
            setContentView(R.layout.activity_main);

            //I have the correct Result here
            Log.i("Test ScanResult", String.valueOf(result)); 

            //correct Default textview value stored here
            Log.i("Test Mainactivity", itemNameTextView.getText().toString());

            //Set the textview
            itemNameTextView.setText(String.valueOf(result));

            //Sets the TextView correctly just does not display on screen
            Log.i("Test Mainactivity", itemNameTextView.getText().toString());



        }
    });


}


@Override
protected void onPause() {
    super.onPause();
    scannerView.stopCamera();
}

}

1 个答案:

答案 0 :(得分:0)

在您的代码中,您在scanCode(查看视图)方法中调用setContentView(scannerView);,该方法将scannerview设置为您的活动布局,并且您在onCreate()方法中设置的先前布局无效,并且您的texView将不会更新。

这是实施ZXING扫描仪的正确方法

setOnClickListener(new OnClickListener() {
public void onClick(View v) {
    Intent intent = new Intent("com.google.zxing.client.android.SCAN");
    intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
    startActivityForResult(intent, 0);
}
});

 public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
    if (resultCode == RESULT_OK) {
        String contents = intent.getStringExtra("SCAN_RESULT");
        String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
        // Handle successful scan
    } else if (resultCode == RESULT_CANCELED) {
        // Handle cancel
    }
}
}

这是完整的例子

Github Link

相关问题