Android中findviewbyid返回null

Android中findviewbyid返回null,android,Android,我不明白为什么它总是返回null((FrameLayout)findviewbyd(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 and

我不明白为什么它总是返回null((FrameLayout)findviewbyd(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);
    }
导入android.app.Activity;
导入android.hardware.Camera;
导入android.os.Build;
导入android.os.Bundle;
导入android.os.Handler;
导入android.view.view;
导入android.widget.FrameLayout;
导入net.sourceforge.zbar.Config;
导入net.sourceforge.zbar.Image;
导入net.sourceforge.zbar.ImageScanner;
导入net.sourceforge.zbar.Symbol;
导入net.sourceforge.zbar.SymbolSet;
公共类QRCodeReaderActivity扩展活动{
专用处理器自动聚焦处理器;
私人摄像机;
私人摄像审查摄像审查;
专用图像扫描仪;
私有布尔QRCodeScanned=false;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
发起();
if(Build.VERSION.SDK\u INT
布局文件

<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"/>

您需要

setContentView(R.layout.x); // replace x with whatever your layout is called
onCreate(Bundle savedInstanceState)
中,如下更改它

 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.YourLayoutName);
}


设置ContentView之前,您正在搜索视图,这就是导致错误的原因。

是否从正确的布局中找到视图?您必须使用布局id在oncreate中调用setContentView。setContentView在哪里?未指定布局。找不到任何视图。谢谢,我不知道我怎么会错过这个:S