【问题标题】:My Application is running fine on Android 4.4 but crashes on 2.3. Not even starting我的应用程序在 Android 4.4 上运行良好,但在 2.3 上崩溃。甚至没有开始
【发布时间】:2014-03-16 20:00:34
【问题描述】:

下面是源代码。 这个程序只是做记忆匹配游戏,在 android 4.4 中运行良好 包 com.example.myimagematchgamev10;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import android.widget.Button;
import android.widget.ImageButton;

import java.util.HashMap;
import java.util.Random;

class MyCustomImageButton extends ImageButton
{
    protected int holdingImage;

    public MyCustomImageButton(Context context) {
        super(context);
        this.holdingImage = -1;
    }
    public MyCustomImageButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.holdingImage = -1;
    }
    public MyCustomImageButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.holdingImage = -1;
    }
}
//public class MainActivity extends ActionBarActivity {
    public class MainActivity extends Activity {
    Random myR = new Random ();
    MyCustomImageButton[] myImageButtons;
    int[] myImages={R.drawable.one,R.drawable.two,R.drawable.five,R.drawable.seven,R.drawable.eight,R.drawable.six,R.drawable.three,R.drawable.four};
    int[] myImageButtonArray = {R.id.imageButton0, R.id.imageButton1, R.id.imageButton2, R.id.imageButton3, R.id.imageButton4,
            R.id.imageButton5, R.id.imageButton6, R.id.imageButton7, R.id.imageButton8, R.id.imageButton9,
            R.id.imageButton10, R.id.imageButton11, R.id.imageButton12, R.id.imageButton13, R.id.imageButton14,
            R.id.imageButton15};

    // The following four lies for holding temp data while checking the match
    int myFirstButtonImage = R.drawable.ic_launcher;
    int mySecondButtonImage = R.drawable.ic_launcher;
    ImageButton myFirstButton = null;
    ImageButton mySecondButton = null;

    // for message box
    int myNoOfClick = 0;
    int myNoOfCompletedCells = 0;

    Button myNewgame;
    AlertDialog.Builder alertDialog; // =  new AlertDialog.Builder(MainActivity.this);

    protected void initializeGrid()
    {
        for (int i=0; i < 16; ++i)
        {
            myImageButtons[i].setBackgroundResource(R.drawable.ic_launcher);
            myImageButtons[i].setClickable(true);
            myImageButtons[i].holdingImage = -1;
        }
        myNoOfClick = 0;
        myNoOfCompletedCells = 0;
    }

    protected void createGrid()
    {
        myImageButtons = new MyCustomImageButton[16];
        for (int i=0; i < 16; ++i)
        {
            myImageButtons[i] = (MyCustomImageButton) findViewById(myImageButtonArray[i]);

        }
    }

    protected void loadImages()
    {
        int myNextInt;
        for (int i=0; i < 8; ++i)
        {
            for(int j=0; j < 2; ++j)
            {
                myNextInt = myR.nextInt(16);
                while (myImageButtons[myNextInt].holdingImage != -1)
                {
                    myNextInt = myR.nextInt(16);
                }
                if(myImageButtons[myNextInt].holdingImage == -1)
                {
                    myImageButtons[myNextInt].setBackgroundResource(R.drawable.ic_launcher);
                    myImageButtons[myNextInt].holdingImage = myImages[i];
                    //myGridValues[myNextInt] = i+1;
                    // myMap.put(myImageButtonArray[myNextInt],myImages[i]);
                }
            }

        }
    }


    protected void showMessage()
    {
        alertDialog =  new AlertDialog.Builder(MainActivity.this);
        //alertDialog = new AlertDialog.Builder(MainActivity.this).create();
        alertDialog.setTitle("Score");
        alertDialog.setMessage("No. Of clicks are:  " + myNoOfClick +" !");
        alertDialog.setInverseBackgroundForced(true);
        alertDialog.setCancelable(true);
        alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener(){

            public void onClick(DialogInterface dialog,
                int which) {
                    dialog.dismiss();
                }
        });
        alertDialog.show();
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        createGrid();
        initializeGrid();
        loadImages();;

        myNewgame = (Button) findViewById(R.id.newGame);
        myNewgame.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                initializeGrid();
                loadImages();
            }
        });


        for(int i=0; i<myImageButtons.length; ++i)
        {
            final MyCustomImageButton myTempImageButton = myImageButtons[i];
            //final int myIBId = myTempImageButton.getId();
            myTempImageButton.setOnClickListener(new View.OnClickListener() {
                //@Override
                public void onClick(View view) {
                    ++myNoOfClick;
                    myTempImageButton.setBackgroundResource(myTempImageButton.holdingImage);
                    if (myFirstButtonImage == R.drawable.ic_launcher)
                    {
                        if(mySecondButtonImage == R.drawable.ic_launcher)
                        {
                            myFirstButtonImage = myTempImageButton.holdingImage;
                            myFirstButton = myTempImageButton;
                            myTempImageButton.setClickable(false);
                            myNoOfCompletedCells += 2;
                            if (myNoOfCompletedCells >= 16)
                            {
                                showMessage();
                            }
                        }
                        else
                        {
                            myFirstButton.setClickable(true);
                            mySecondButton.setClickable(true);
                            myFirstButton.setBackgroundResource(R.drawable.ic_launcher);
                            mySecondButton.setBackgroundResource(R.drawable.ic_launcher);

                            myFirstButton = myTempImageButton;
                            myFirstButtonImage = myTempImageButton.holdingImage;
                            myTempImageButton.setClickable(false);
                        }
                    }
                    else
                    {
                        myTempImageButton.setClickable(false);
                        if (myFirstButtonImage == myTempImageButton.holdingImage)   // For Success full Match
                        {
                            myFirstButton.setClickable(false);
                            myFirstButtonImage = R.drawable.ic_launcher;
                            mySecondButtonImage = R.drawable.ic_launcher;
                        }
                        else
                        {
                            mySecondButton = myTempImageButton;
                            mySecondButtonImage = myTempImageButton.holdingImage;
                            myFirstButtonImage = R.drawable.ic_launcher;
                        }
                    }
                }
            });
        }

    }


}




The above is the source file

我在清单 xml 中有以下内容

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myimagematchgamev10"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="10" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.myimagematchgamev10.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

以上是manifest xml

以下是我得到的日志

等待设备。 "C:\Program Files (x86)\Android\android-studio\sdk\tools\emulator.exe" -avd AVD_for_Nexus_S -netspeed full -netdelay none

连接的设备:emulator-5554 设备在线:emulator-5554 目标设备:AVD_for_Nexus_S [emulator-5554] 上传文件 本地路径:D:\Android\MyApplicationProject\MyImageMatchgameV1.0Project\MyImageMatchgameV1.0\build\apk\MyImageMatchgameV1.0-debug-unaligned.apk 远程路径:/data/local/tmp/com.example.myimagematchgamev10 安装 com.example.myimagematchgamev10 设备外壳命令:pm install -r "/data/local/tmp/com.example.myimagematchgamev10" 包:/data/local/tmp/com.example.myimagematchgamev10 成功

启动应用程序:com.example.myimagematchgamev10/com.example.myimagematchgamev10.MainActivity。 设备外壳命令:am start -n "com.example.myimagematchgamev10/com.example.myimagematchgamev10.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER 开始: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.myimagematchgamev10/.MainActivity }

【问题讨论】:

  • 简单。 LogcatNotFoundException。
  • @Enrichman 哈哈不错。
  • @Enrichman 也可能是 LogcatNotPostedException ;-)
  • 巨魔,大声笑......重点是你应该发布 logcat
  • targetSdkVersion="10" o_O

标签: android


【解决方案1】:

据我所知,没有日志,您使用的是在 Gingerbread 之后引入的 API。

只需阅读 LogCat,它应该会为您提供有关不起作用的确切功能的提示。

【讨论】:

  • 您能告诉我在哪里查看日志吗?我对 Android 开发和编辑器完全陌生。我正在使用 Android 工作室。
  • 启动应用程序:com.example.myimagematchgamev10/com.example.myimagematchgamev10.MainActivity。设备外壳命令:am start -n "com.example.myimagematchgamev10/com.example.myimagematchgamev10.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER 开始:Intent { act=android.intent .action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.myimagematchgamev10/.MainActivity } [1] 分段错误 am start -n "com...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多