2014-01-07 71 views
2

我目前正在學習Java和一些Android編程,我只是想在手機上玩一下相機。所以首先我想用getNumberOfCameras()方法在屏幕上打印出相機的數量。試圖在屏幕上打印numberOfCameras()

因此,這裏是我的源代碼中的相關部分:

TextView AnzahlKameras = (TextView) findViewById(R.id.ValAnzahlKamerasTextView); 

int numberOfCameras; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_cam_stream); 
    numberOfCameras = Camera.getNumberOfCameras(); 
    AnzahlKameras.setText(numberOfCameras); 
} 

正如你看到的,我已經創建的,我想打印出的攝像機的數量一個TextView。我理解它的方式,getNumberOfCameras()只是打印出一個整數。我只是修改了自動生成的「main」類的代碼。

該代碼似乎很好,我可以導出* .apk文件並將其安裝在我的手機上。然而,每當我嘗試啓動應用程序時,它都會提示錯誤,說應用程序已停止工作,並將我引回到主屏幕。

如果這似乎是一個愚蠢的問題,我將不勝感激任何形式的幫助,並原諒我。考慮到我是所有這些的新手。

謝謝!

編輯:這是請求的日誌文件。

01-07 11:29:06.665 I/ActivityManager(2544): Timeline: Activity_launch_request id:de.phkr.camstream time:11468943 
01-07 11:29:06.665 I/ActivityManager(2139): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=de.phkr.camstream/.CamStream} from pid 2544 
01-07 11:29:06.866 I/ActivityManager(2139): Start proc de.phkr.camstream for activity de.phkr.camstream/.CamStream: pid=22295 uid=10115 gids={50115, 1006, 1028, 1015} 
01-07 11:29:07.066 E/AndroidRuntime(22295): Process: de.phkr.camstream, PID: 22295 
01-07 11:29:07.066 E/AndroidRuntime(22295): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.phkr.camstream/de.phkr.camstream.CamStream}: java.lang.NullPointerException 
01-07 11:29:07.066 E/AndroidRuntime(22295):  at de.phkr.camstream.CamStream.<init>(CamStream.java:11) 
01-07 11:29:07.076 W/ActivityManager(2139): Force finishing activity de.phkr.camstream/.CamStream 
01-07 11:29:07.826 W/ActivityManager(2139): Activity pause timeout for ActivityRecord{425392e8 u0 de.phkr.camstream/.CamStream t14 f} 
01-07 11:29:08.928 I/ActivityManager(2139): Process de.phkr.camstream (pid 22295) has died. 
+0

PLZ添加錯誤日誌 – Sanket990

+0

你是否在'AndroidManifest.xml'上註冊了此活動 – Yup

+0

我編輯了我的帖子 –

回答

3

試試這個: 如果您已經添加的許可,則有一個愚蠢的錯誤,即

取代AnzahlKameras.setText(numberOfCameras);通過AnzahlKameras.setText(" "+numberOfCameras);

也叫TextView AnzahlKameras = (TextView) findViewById(R.id.ValAnzahlKamerasTextView);這裏面onCreate()方法

我認爲它會被解決。

+0

是的我知道,主要問題是AnzahlKameras.setText(numberOfCameras);如果numberOfCameras將是一個字符串,那麼它將運行,但儘管它是整數,所以出於這個原因首先需要一個字符串。 –

1

您需要論文權限添加到您的清單:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" /> 

試試這個:

TextView anzahlKameras; 

int numberOfCameras; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_cam_stream); 
    numberOfCameras = Camera.getNumberOfCameras(); 
    anzahlKameras= (TextView) findViewById(R.id.ValAnzahlKamerasTextView); 
    anzahlKameras.setText(numberOfCameras); 
    } 

期間你已經或OnCreate方法後使用findViewById。否則,它將返回null

Documentation

+0

嗨,謝謝你的回答。我已經將權限添加到了我的Manifest,並且它們正在我的Andoid設備上顯示在「Apps - > NameOfMyApp」下。 – Phil

+0

另外不要忘記,java中的每個字段/變量都必須以小寫字母開頭。其大會 –

+0

謝謝!這和Satyaki Mukherjee發佈的答案解決了它。 – Phil