Fehler beim Erweitern einer Klasse
Ich versuche, eine benutzerdefinierte Ansicht erstellen GhostSurfaceCameraView
erweitert SurfaceView
. Hier ist meine Klasse definition-Datei
GhostSurfaceCameraView.java
:
public class GhostSurfaceCameraView extends SurfaceView implements SurfaceHolder.Callback {
SurfaceHolder mHolder;
Camera mCamera;
GhostSurfaceCameraView(Context context) {
super(context);
//Install a SurfaceHolder.Callback so we get notified when the
//underlying surface is created and destroyed.
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder) {
//The Surface has been created, acquire the camera and tell it where to draw.
mCamera = Camera.open();
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException exception) {
mCamera.release();
mCamera = null;
//TODO: add more exception handling logic here
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
//Surface will be destroyed when we return, so stop the preview.
//Because the CameraDevice object is not a shared resource, it's very
//important to release it when the activity is paused.
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
//Now that the size is known, set up the camera parameters and begin
//the preview.
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(w, h);
parameters.set("orientation", "portrait");
//parameters.setRotation(90); //API 5+
mCamera.setParameters(parameters);
mCamera.startPreview();
}
}
- Und dies ist in meinen ghostviewscreen.xml:
<com.alpenglow.androcap.GhostSurfaceCameraView android:id="@+id/ghostview_cameraview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
Nun in der Aktivität habe ich gemacht:
protected void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.ghostviewscreen);
}
}
Wenn setContentView()
aufgerufen wird, wird eine Ausnahme geworfen:
Binary XML file 09-17 22:47:01.958: ERROR/ERROR(337):
ERROR IN CODE:
android.view.InflateException: Binary
XML file line #14: Error inflating
class
com.alpenglow.androcap.GhostSurfaceCameraView
Kann mir jemand sagen warum ich diese Fehlermeldung erhalten? Danke.
InformationsquelleAutor der Frage eccentricbiped | 2010-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass ich herausgefunden habe, warum das nicht funktioniert. Ich war nur einen Konstruktor für den Fall, dass ein parameter 'context', wenn ich sollte einen Konstruktor für die beiden parameter 'Context, AttributeSet' Fall. Ich musste auch zu geben, die Konstruktor(en) public access. Hier ist mein Update:
InformationsquelleAutor der Antwort eccentricbiped
@Tim - Sowohl die Konstruktoren sind nicht erforderlich, nur die
ViewClassName(Context context, AttributeSet attrs )
Konstruktor ist notwendig. Ich fand dies auf die schmerzhafteste Art und Weise, nach Stunden und Stunden Verschwendete Zeit.Ich bin sehr neu in Android-Entwicklung, aber ich mache eine wilde Vermutung ist hier, dass es vielleicht aufgrund der Tatsache, dass wir da sind hinzufügen von benutzerdefinierten
View
Klasse in der XML-Datei, setzen wir mehrere Attribute in der XML-Datei verarbeitet werden muss zum Zeitpunkt der Instanziierung. Jemand weit mehr wissen als ich, in der Lage zu vergießen deutlicheres Licht auf diese Angelegenheit aber.InformationsquelleAutor der Antwort KVNam
Eine weitere mögliche Ursache der "Error inflating class" - Meldung könnte falsch geschrieben, den vollständigen package-Namen, wo es in XML spezifiziert:
Öffnen Sie Ihr layout-XML-Datei im Eclipse-XML-editor, markieren Sie dieses problem.
InformationsquelleAutor der Antwort rmtheis
Ist es wichtig zu schreiben, voller Klasse-Pfad in der xml.
Ich hab 'Error inflating class", wenn nur die Unterklasse der name geschrieben wurde.
InformationsquelleAutor der Antwort Mykola
Hatte ich diesen Fehler plagt mich seit den letzten paar Stunden. Stellt sich heraus, habe ich die benutzerdefinierte Ansicht lib als Modul in Android Studio, aber ich hätts hinzufügen einer Abhängigkeit in der app -
build.gradle
.InformationsquelleAutor der Antwort Ionoclast Brigham
Ich hatte das gleiche problem, die Verlängerung eines TextEdit. Für mich, der Fehler war ich habe nicht fügen Sie die "öffentlichen" an den Konstruktor. In meinem Fall funktioniert es, auch wenn ich definiere nur einen Konstruktor, dem man mit Argumenten
Context
undAttributeSet
. Die WLAN-Sache ist, dass der Fehler zeigt sich nur beim erstellen eines APK (angesengt oder nicht) und ich übertrage es an die Geräte. Wenn die Anwendung ausgeführt wird, über AndroidStudio -> RunApp auf ein USB-Gerät angeschlossen, die app funktioniert.InformationsquelleAutor der Antwort Nicola Mingotti
in meinem Fall fügte ich eine solche zyklische Ressource:
dann verändert, um
und es funktionierte
InformationsquelleAutor der Antwort Евгений Воробей
fwiwerhielt ich diesen Fehler durch einige benutzerdefinierte Initialisierung innerhalb des Konstruktors, die versuchen auf ein null-Objekt.
InformationsquelleAutor der Antwort Tom Howard
In meinem Fall, ich kopierte meine Klasse von woanders und nicht sofort bemerken, dass es war ein
abstract
Klasse. Sie können nicht aufblasen abstrakte Klassen.InformationsquelleAutor der Antwort Isaiah