findviewbyid在Android中返回null

时间:2015-06-19 14:00:56

标签: android

我只是看不出为什么它总是返回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"/>

2 个答案:

答案 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之前,您正在搜索视图,这就是导致错误的原因。