我只是看不出为什么它总是返回null((FrameLayout)findViewById(R.id.qrCameraPreview);)。我希望你能帮助我。
import android.app.Activity;
import android.hardware.Camera;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.FrameLayout;
import net.sourceforge.zbar.Config;
import net.sourceforge.zbar.Image;
import net.sourceforge.zbar.ImageScanner;
import net.sourceforge.zbar.Symbol;
import net.sourceforge.zbar.SymbolSet;
public class QRCodeReaderActivity extends Activity {
private Handler autoFocusHandler;
private Camera camera;
private CameraPreview cameraPreview;
private ImageScanner QRCodeScanner;
private boolean QRCodeScanned = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initiate();
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
{
//Old and deprecated implementation of Camera.
initiateOldCamera();
}
else
{
//New and improved version of CameraManager.
//todo: Implement this. But for now use old implementation.
initiateOldCamera();
}
QRCodeScanner = new ImageScanner();
QRCodeScanner.setConfig(0, Config.X_DENSITY, 3);
QRCodeScanner.setConfig(0, Config.Y_DENSITY, 3);
cameraPreview = new CameraPreview(this, camera, previewCameraCallback, autoFocusCallback);
}
private void initiate()
{
FrameLayout preview = (FrameLayout) findViewById(R.id.qrCameraPreview);
preview.addView(cameraPreview);
}
布局文件
<TextView
android:id="@+id/qrHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/point_camera_at_qr_code"
style="@style/textHeader"/>
<Button
android:id="@+id/qrCancelButton"
android:text="@string/cancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/buttonLargeWhite"
android:layout_alignParentBottom="true"/>
<FrameLayout
android:id="@+id/qrCameraPreview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/qrHeader"
android:layout_above="@id/qrCancelButton"
android:background="@color/PrinchWhite"
android:padding="3dp"/>
答案 0 :(得分:1)
你需要
setContentView(R.layout.x); // replace x with whatever your layout is called
onCreate(Bundle savedInstanceState)
中的
答案 1 :(得分:1)
像这样改变它。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.YourLayoutName);
}
在设置ContentView之前,您正在搜索视图,这就是导致错误的原因。