Запуск небольшой проблемы с инфляцией при попытке реализовать микрофон с открытым исходным кодом в моем приложении. Поэтому я пытаюсь понять, как это исправить. Еще один набор глаз, смотрящих на это, был бы хорош. Так вот мы идем:android.view.InflateException: двоичная строка XML-файла # 94: ошибка раздувания класса
Вот класс, что это отношение к:
package styckz.com.clearpicturemode;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;
public class CompassView extends ImageView {
private float mDirection;
private Drawable compass;
public CompassView(Context context) {
super(context);
mDirection = 0.0f;
compass = null;
}
public CompassView(Context context, AttributeSet attrs) {
super(context, attrs);
mDirection = 0.0f;
compass = null;
}
public CompassView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mDirection = 0.0f;
compass = null;
}
@Override
protected void onDraw(Canvas canvas) {
if (compass == null) {
compass = getDrawable();
compass.setBounds(0, 0, getWidth(), getHeight());
}
canvas.save();
canvas.rotate(mDirection, getWidth()/2, getHeight()/2);
compass.draw(canvas);
canvas.restore();
}
public void updateDirection(float direction) {
mDirection = direction;
invalidate();
}
}
Так вот мы ... Я попытался поворотом, что класс выше от общественности к статическому электричеству без толка согласно запросу в другом потоке, и это не сработало ... Может, я что-то делаю неправильно? Все, что было сделано, это сделать заголовок класса красным под ним и утверждать, что статический признак недействителен.
Любые идеи?
Вот Layout XML файл:
<?xml version="1.0" encoding="UTF-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background" >
<LinearLayout
android:id="@+id/view_compass"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background_light"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="vertical" >
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/prompt" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="70dip"
android:orientation="horizontal" >
<LinearLayout
android:id="@+id/layout_direction"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:orientation="horizontal" >
</LinearLayout>
<ImageView
android:layout_width="20dip"
android:layout_height="fill_parent" >
</ImageView>
<LinearLayout
android:id="@+id/layout_angle"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="left"
android:orientation="horizontal" >
</LinearLayout>
</LinearLayout>
</FrameLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="vertical" >
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/background_compass" />
<net.micode.compass.CompassView
android:id="@+id/compass_pointer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/compass" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/miui_cover" />
</FrameLayout>
</LinearLayout>
</LinearLayout>
<FrameLayout
android:id="@+id/location_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_bottom"
android:orientation="vertical" >
</LinearLayout>
<TextView
android:id="@+id/textview_location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/getting_location"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#7FFFFFFF" />
</FrameLayout>
</LinearLayout>
</FrameLayout>
<include
android:id="@+id/low_accuracy_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="35dip"
layout="@*android:layout/transient_notification"
android:visibility="gone" />
Также здесь есть LogCat обреченности:
11-22 14:22:30.667: E/AndroidRuntime(16140): FATAL EXCEPTION: main
11-22 14:22:30.667: E/AndroidRuntime(16140): java.lang.RuntimeException: Unable to start activity ComponentInfo{styckz.com.clearpicturemode/styckz.com.clearpicturemode.CompassActivity}: android.view.InflateException: Binary XML file line #94: Error inflating class net.micode.compass.CompassView
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.os.Handler.dispatchMessage(Handler.java:99)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.os.Looper.loop(Looper.java:137)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.app.ActivityThread.main(ActivityThread.java:5103)
11-22 14:22:30.667: E/AndroidRuntime(16140): at java.lang.reflect.Method.invokeNative(Native Method)
11-22 14:22:30.667: E/AndroidRuntime(16140): at java.lang.reflect.Method.invoke(Method.java:525)
11-22 14:22:30.667: E/AndroidRuntime(16140): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-22 14:22:30.667: E/AndroidRuntime(16140): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-22 14:22:30.667: E/AndroidRuntime(16140): at dalvik.system.NativeStart.main(Native Method)
11-22 14:22:30.667: E/AndroidRuntime(16140): Caused by: android.view.InflateException: Binary XML file line #94: Error inflating class net.micode.compass.CompassView
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
11-22 14:22:30.667: E/AndroidRuntime(16140): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.app.Activity.setContentView(Activity.java:1895)
11-22 14:22:30.667: E/AndroidRuntime(16140): at styckz.com.clearpicturemode.CompassActivity.onCreate(CompassActivity.java:99)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.app.Activity.performCreate(Activity.java:5133)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
11-22 14:22:30.667: E/AndroidRuntime(16140): ... 11 more
11-22 14:22:30.667: E/AndroidRuntime(16140): Caused by: java.lang.ClassNotFoundException: Didn't find class "net.micode.compass.CompassView" on path: DexPathList[[zip file "/data/app/styckz.com.clearpicturemode-2.apk"],nativeLibraryDirectories=[/data/app-lib/styckz.com.clearpicturemode-2, /vendor/lib, /system/lib]]
11-22 14:22:30.667: E/AndroidRuntime(16140): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
11-22 14:22:30.667: E/AndroidRuntime(16140): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
11-22 14:22:30.667: E/AndroidRuntime(16140): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.view.LayoutInflater.createView(LayoutInflater.java:559)
11-22 14:22:30.667: E/AndroidRuntime(16140): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
11-22 14:22:30.667: E/AndroidRuntime(16140): ... 26 more
Вам необходимо разместить свой xml-файл проблема есть. – Szymon
Хорошо, извините! – CodeMonkeyAlx
по ошибке, похоже, у вас могут быть путаницы, поскольку они ищут CompasView в 'net.micode.compass.CompassView', где у вас есть compasview в' styckz.com.clearpicturemode' – tyczj