2016-04-02 111 views
0

以下代碼來自Android開發人員指南,用於在以下URL中構建相機。請花點時間幫助我解決這個問題。最好的祝願! The aforementioned site如何在Android Studio項目中實現以下OnClick代碼?

的誤差似乎是:

  1. 我ID之前手動添加ř...
  2. setOnclickListener,setCaptureButtonText,視圖V,@覆蓋和mMediaRecorder被示出爲錯誤。
  3. )最後被突出顯示爲錯誤。

這是從activity.xml文件,顯示該按鈕被引用的代碼:

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

和下面的代碼本身:

private boolean isRecording = false; 

    // Add a listener to the Capture button 
    Button captureButton = (Button) findViewById(id.button_capture); 
    captureButton.setOnClickListener(
    new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (isRecording) { 
      // stop recording and release camera 
      mMediaRecorder.stop(); // stop the recording 
      releaseMediaRecorder(); // release the MediaRecorder object 
      mCamera.lock();   // take camera access back from MediaRecorder 

      // inform the user that recording has stopped 
      setCaptureButtonText("Capture"); 
      isRecording = false; 
     } else { 
      // initialize video camera 
      if (prepareVideoRecorder()) { 
       // Camera is available and unlocked, MediaRecorder is prepared, 
       // now you can start recording 
       mMediaRecorder.start(); 

       // inform the user that recording has started 
       setCaptureButtonText("Stop"); 
       isRecording = true; 
      } else { 
       // prepare didn't work, release the camera 
       releaseMediaRecorder(); 
       // inform user 
      } 
     } 
    } 
    } 
    ); 
+0

他們沒有在那個教程中提供完整的代碼,所有那些方法都沒有在那裏提供 –

回答

0

由於您使用XML,你真的應該直接添加屬性到對象。無論你告訴它運行什麼函數都會運行。無需添加任何其他偵聽器。

<Button 
    android:id="@+id/button_capture" 
    android:text="Capture" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:onClick="yourFunction" 
    /> 
+0

我對這種方法是新的。如何直接添加功能直接工作? – thanksagain123

+0

您正試圖調用一個名爲「onClick」的函數。你通過將它包裝在一個監聽器中來做到這一點。我只是說這是沒有必要的。無論您想要運行哪種函數(void),都可以直接從該按鈕的XML定義中調用它。那麼不需要創建一個監聽器。 – durbnpoisn

+0

@ thanksagain123如果使用這種方法,函數定義是有限的。在這種情況下,'yourFunction'應該是'public'並且接收'View v'參數,比如'public void yourFunction(View v)'。這種方法不能在Fragment中使用,因爲xml'android:onClick'只查找它的父或祖先上下文。 – sakiM

相關問題