Как добавить View в Frame Layout Android - PullRequest
3 голосов
/ 11 ноября 2011

Я пытаюсь запустить простое приложение камеры. Я использовал образец кода CameraPreview, предоставленный Google. И даже приведенный ниже код взят из документации на сайте разработчиков Android. Но есть проблема с добавлением представления mPreview. Сбой в следующих 2 условиях - он говорит, что приложение остановлено без причины, попробуйте еще раз - журналов тоже нет:

i) preview.addView (mPreview) и

б) setContentView (mPreview)

Я попробовал вариант ii) просто чтобы исключить вероятность того, что что-то не так с кодом CameraPreview.

Но вариант i) не работает даже для кнопки захвата. Поэтому мне было интересно, что не так с addView.

Я прошел много форумов, не видел этой проблемы. Я также подумал об использовании LayoutInflater, но не вижу, как это применимо здесь.

public class CameraTrialActivity extends Activity implements OnClickListener{

    /** Called when the activity is first created. */
 private Camera mCamera;    
 private CameraPreview mPreview; 
 private final String TAG = "Camera Preview";

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        // Create an instance of Camera       
        mCamera = getCameraInstance();        
        // Create our Preview view and set it as the content of our activity.      
        mPreview = new CameraPreview(this, mCamera);      
        FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);       
        preview.addView(mPreview);

        Button captureButton = (Button)findViewById(R.id.button_capture);
        //preview.addView(captureButton);
        //captureButton.setOnClickListener(this);
        //setContentView(R.layout.main);
        //setContentView(mPreview);
    }
}

// XML-файл

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
     android:orientation="horizontal"    
     android:layout_width="fill_parent"    
     android:layout_height="fill_parent"   
>  
 <FrameLayout    
     android:id="@+id/camera_preview"    
     android:layout_width="fill_parent"    
     android:layout_height="fill_parent"    
     android:layout_weight="1"    />  

    <Button    
        android:id="@+id/button_capture"    
        android:text="Capture"    
        android:layout_width="wrap_content"    
        android:layout_height="wrap_content"    
        android:layout_gravity="center"
    />
</LinearLayout>
...