Android 如何解决:二进制XML文件行#8:错误膨胀类
我的应用程序包括在用户说话时移动图片。我已经这样做了,但是当我试图为我的应用程序设置一个图像作为背景时,我遇到了一个问题。我正试图使用xml文件来实现这一点,但是我得到了一个错误:膨胀类。有人能帮我吗? 提前谢谢 xml类中的第8行是:Android 如何解决:二进制XML文件行#8:错误膨胀类,android,android-canvas,android-inflate,android-background,Android,Android Canvas,Android Inflate,Android Background,我的应用程序包括在用户说话时移动图片。我已经这样做了,但是当我试图为我的应用程序设置一个图像作为背景时,我遇到了一个问题。我正试图使用xml文件来实现这一点,但是我得到了一个错误:膨胀类。有人能帮我吗? 提前谢谢 xml类中的第8行是: <com.example.prova1.MoveBalloon.DrawBalloon android:id="@+id/drawBalloon1" android:layout_width="match_parent"
<com.example.prova1.MoveBalloon.DrawBalloon
android:id="@+id/drawBalloon1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="182dp" />
我试图与xml连接的MoveBallon类是
package com.example.prova1;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class MoveBalloon extends Activity {
Bitmap balloon;
DrawBalloon myView;
float x,y,sensorX, sensorY;
SensorManager sm;
Microphone mic;
public class DrawBalloon extends SurfaceView implements Runnable {
SurfaceHolder ourHolder ;
Thread ourThread = null;
boolean isRunning=true;
public DrawBalloon(Context context) {
super(context);
ourHolder= getHolder();
}
public DrawBalloon(Context context, AttributeSet attrs) {
super(context, attrs);
ourHolder= getHolder();
}
public void pause() {
isRunning=false;
while(true){
try{
ourThread.join();
} catch (InterruptedException e){
e.printStackTrace();
}
break;
}
ourThread=null;
}
public void resume(){
isRunning=true;
ourThread = new Thread(this);
ourThread.start();
}
@Override
public void run (){
while(isRunning){
if(!ourHolder.getSurface().isValid())
continue;
Canvas canvas = ourHolder.lockCanvas();
updateMic();
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(balloon, sensorX, sensorY,null);
ourHolder.unlockCanvasAndPost(canvas);
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
/*sm= (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if(sm.getSensorList(Sensor.TYPE_ACCELEROMETER).size()!=0){
Sensor s = sm.getSensorList(Sensor.TYPE_ACCELEROMETER).get(o);
sm.registerListener(this,s ,SensorManager.SENSOR_DELAY_NORMAL);
}*/
mic = new Microphone();
balloon = BitmapFactory.decodeResource(getResources(), R.drawable.images);
sensorX=150;
sensorY=350;
//x=y=sensorX=sensorY=0;
//myView= new DrawBalloon (this);
//myView.resume();
//setContentView(R.layout.move_balloon);
setContentView(R.layout.move_balloon);
}
/*@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sensorX=event.values[0];
sensorY=event.values[1];
}
*/
public void updateMic(){
int level = mic.getLevel();
sensorY-=level;
}
@Override
public void onBackPressed() {
finish();
}
}
这是我的新xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MoveBalloon"
android:background="#00000000" >
<view class="com.example.prova1.MoveBalloon$DrawBalloon"
android:id="@+id/drawBalloon1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="182dp"
/>
</RelativeLayout>
您必须使用类属性
看到这里,我这样做了,但出现了一个错误,并说:元素类型“com.example.prova1.MoveBalloon”后面必须跟属性规范“>”或“/>”。我能做些什么吗?我这样做是为了更改我的xml文件,看起来我已经在上面发布了,但我仍然会遇到以下错误:RuntimeException:无法启动activity ComponentInfo{com.example.prova1/com.example.prova1.MoveBalloon}:android.view.InflateException:二进制XML文件行#8:膨胀类com.example.prova1.MoveBalloon$drableon的错误原因:java.lang.NoSuchMethodException:[类android.content.Context,接口android.util.AttributeSet]使内部类保持静态
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MoveBalloon"
android:background="#00000000" >
<view class="com.example.prova1.MoveBalloon$DrawBalloon"
android:id="@+id/drawBalloon1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="182dp"
/>
</RelativeLayout>