0

我创建了一个应用程序,它在我的平板电脑上运行良好,但在我的三星 Galaxy ace 上停止了。当我运行 LogCat 时,我得到了下一个日志。

我会感谢任何帮助。

I/DefContainer(6430):复制 /mnt/sdcard/apps/ketekambioFull.apk 到 /mnt/asec/smdl2tmp1/pkg.apk
D/MountService(1492)::::: renameSecureContainer::path = /mnt/sdcard,oldId = smdl2tmp1,newId = com.mydom.mypackage-1
D/VoldCmdListener(1319):asec 重命名 smdl2tmp1 com.mydom.mypackage-1
D/MountService(1492)::::: isSecureContainerMounted :: path = /mnt/sdcard,id = com.mydom.mypackage-1
W/PackageManager(1492):安装容器 com.mydom.mypackage-1
D/MountService(1492)::::: mountSecureContainer:: path = /mnt/sdcard, id = com.mydom.mypackage-1, ownerUid = 1000
D/VoldCmdListener(1319):asec mount com.mydom.mypackage-1 {} 1000
D/Vold (1319): Fat::doMount mount(/dev/block/dm-2, /mnt/asec/com.mydom.mypackage-1,vfat,0x00200087,utf8,uid=1000,gid=0,fmask =222,dmask=222,shortname=mixed)
I/PackageManager(1492):在新路径成功将 smdl2tmp1 重命名为 com.mydom.mypackage-1:/mnt/asec/com.mydom.mypackage-1
D/MountService(1492):::::getSecureContainerPath::path = /mnt/sdcard,id = com.mydom.mypackage-1
D/VoldCmdListener(1319):asec 路径 com.mydom.mypackage-1
D/MountService(1492)::::: isSecureContainerMounted :: path = /mnt/sdcard,id = com.mydom.mypackage-1
I/Z7BroadcastReceiver(4649):onReceive()开始,意图:Intent {act=android.intent.action.PACKAGE_ADDED dat=package:com.mydom.mypackage flg=0x10000000 cmp=com.seven.Z7/.service.Z7BroadcastReceiver(有额外的)}
D/Launcher.SWidgetPkgMgr(1585):addPackage=com.mydom.mypackage
V/PackageIntentReceiver(4603):onReceive()意图:Intent {act=android.intent.action.PACKAGE_ADDED dat=package:com.mydom.mypackage flg=0x10000000 cmp=com.sec.android.app.controlpanel/.PackageIntentReceiver(有附加功能)} pkg:com.mydom.mypackage action:android.intent.action.PACKAGE_ADDED
I/ActivityManager(1492):为活动 com.mydom.mypackage/.SplashScreenActivity 启动 proc com.mydom.mypackage:pid=6501 uid=10080 gids={}
W/ActivityManager(1492):尝试启动 com.mydom.mypackage/.ActivityJuego
D/dalvikvm(6501):VFY:Lcom /corral/keteKambio/ActivityJuego 中的死代码 0x001b-001c;。getDisplayWidth (Landroid/content/Context;)I
D/dalvikvm(6501):VFY:Lcom/corral/keteKambio/Visor 中的死代码 0x002e-0034;。(Landroid/内容/上下文;)V
D/dalvikvm(6501):VFY:Lcom/corral/keteKambio/Visor 中的死代码 0x002e-0034;。(Landroid/content/Context;Landroid/util/AttributeSet;)V
D/dalvikvm(6501):VFY:Lcom/corral/keteKambio/Visor 中的死代码 0x002e-0034;。(Landroid/content/Context;Landroid/util/AttributeSet;I)V
E/AndroidRuntime(6501):java.lang.RuntimeException:无法启动活动 ComponentInfo{com.mydom.mypackage/com.mydom.mypackage.ActivityJuego}:android.view.InflateException:二进制 XML 文件第 69 行:膨胀类错误com.mydom.mypackage.Visor
E/AndroidRuntime(6501): 由: android.view.InflateException: Binary XML file line #69: Error inflating class com.mydom.mypackage.Visor 引起
E/AndroidRuntime(6501): 在 com.mydom.mypackage.ActivityJuego.onCreate(ActivityJuego.java:101)
E/AndroidRuntime(6501): 在 com.mydom.mypackage.Visor.(Visor.java:87)
W/ActivityManager(1492):强制完成活动 com.mydom.mypackage/.ActivityJuego
W/ActivityManager(1492):HistoryRecord 的活动暂停超时{40849d30 com.mydom.mypackage/.ActivityJuego}
D/VoldCmdListener(1319):CommandListener::AsecCmd::runCommand->com.mydom.mypackage-1
E/InputDispatcher(1492): channel '407a6fa8 com.mydom.mypackage/com.mydom.mypackage.SplashScreenActivity (server)' ~ 消费者关闭输入通道或发生错误。事件=0x8
E/InputDispatcher(1492): 频道 '407a6fa8 com.mydom.mypackage/com.mydom.mypackage.SplashScreenActivity (server)' ~ 频道已不可恢复地损坏,将被处置!
I/WindowManager(1492):WIN DEATH:Window{407a6fa8 com.mydom.mypackage/com.mydom.mypackage.SplashScreenActivity paused=true}
W/ActivityManager(1492):HistoryRecord{40ab1d68 com.mydom.mypackage/.SplashScreenActivity} 的活动销毁超时
W/ActivityManager(1492):HistoryRecord 的活动销毁超时{40849d30 com.mydom.mypackage/.ActivityJuego}

我不明白为什么它可以在我的平板电脑上运行,但在我的手机三星 Galaxy ace 上却不行。我已经强调了我在阅读其他相关链接时所理解的内容。

日志表明我的 XML 中的第 69 行引发了 inflateException。我接下来展示这个文件。似乎问题在于夸大了 Visor 类,这是一个 SurfaceView。我也得到一个 VFY: dead code 0x001b-001c 我不知道哪个是主要错误。VFY:死代码或 InflateException?。

ActivityJuego.xml:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/TableLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:stretchColumns="3"
tools:context=".MainActivity" >

...
...
...
...

    <LinearLayout
        android:id="@+id/LinearLayoutVistaCliente"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@drawable/borde"
        android:padding="1dp"
        android:paddingLeft="1dp"
        android:paddingTop="1dp"
        android:paddingRight="1dp"
        android:paddingBottom="1dp">

        <com.mydom.mypackage.Visor
            android:id="@+id/visorCliente"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1.0" />

    </LinearLayout>

...
...
...
...

</TableLayout>

ActivityJuego.java

package com.mydom.mypackage;


public class ActivityJuego extends Activity {

    public static int nivel = 1;
    private Visor visorCliente;
    private Visor visorCaja;
    private static Typeface myTypeface;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (getDisplayWidth(this) <= 720) {
            smallScreen = true;
            requestWindowFeature(Window.FEATURE_NO_TITLE);
        }

        setContentView(R.layout.activity_juego);

        visorCliente = (Visor) findViewById(R.id.visorCliente);
        visorCaja = (Visor) findViewById(R.id.visorCaja);
        myTypeface = Typeface.createFromAsset(this.getAssets(), "LCD.ttf");

    }
...
...
...
...

}

最后,

遮阳板.java

package com.mydom.mypackage;

public class Visor extends SurfaceView implements SurfaceHolder.Callback {

    BitmapFactory.Options opts = new BitmapFactory.Options();

...
...
...

    public Visor(Context context) {
        super(context);
        getHolder().addCallback(this);
        opts.inMutable=true;
    }

    public Visor(Context context, AttributeSet attrs) {
        super(context, attrs);
        getHolder().addCallback(this);
        opts.inMutable=true;
   }

    public Visor(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        getHolder().addCallback(this);
        opts.inMutable=true;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.WHITE);
        if (caja != null) {
            draw(caja, canvas);
        }
    }

...
...
...
...

}

提前谢谢了。

4

1 回答 1

1

异常发生在布局膨胀时,在Visor.

从发布的代码中,最可能的解释是那里getHolder()返回 null 。

于 2014-06-14T01:34:28.523 回答