我目前正在学习Java和一些Android编程,我只想在手机上玩一下相机。首先,我想使用 getNumberOfCameras()方法在屏幕上打印出Cameras的数量。
所以这是源代码的相关部分:
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 :(得分:3)
试试这个: 如果您已经添加了权限,那么就会出现一个愚蠢的错误,即
将AnzahlKameras.setText(numberOfCameras);
替换为AnzahlKameras.setText(" "+numberOfCameras);
也可以在onCreate()方法中调用TextView AnzahlKameras = (TextView) findViewById(R.id.ValAnzahlKamerasTextView);
我认为它会被解决。
答案 1 :(得分: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