簡體   English   中英

findviewbyid 在 Android 中返回 null

[英]findviewbyid returns null in 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"/>

你需要

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 之前,您正在搜索視圖,這就是導致錯誤的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM