我有一个简单的应用程序,我正在努力工作。问题是我无法在设置后显示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();
}
}
答案 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
}
}
}
这是完整的例子