2015-06-19 3 views
-3

Я просто не вижу, почему он всегда возвращает null ((FrameLayout) findViewById (R.id.qrCameraPreview);). Я надеюсь, что вы можете мне помочь.findviewbyid возвращает null в Android

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

Вы находите виды из правильной компоновки? –

+0

Да, это тот же макет. Я могу просто загрузить компоновку хорошо – Sulby

+5

Вы должны вызвать setContentView в своем oncreate с идентификатором макета. – Neil

ответ

1

изменить его, как это.

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

}

Перед установкой вашего ContentView вы ищете View, То, что вызвало ошибку.

1

Вам нужно

setContentView(R.layout.x); // replace x with whatever your layout is called 

в onCreate(Bundle savedInstanceState)

Смежные вопросы