OnClickListener下的Intent方法

时间:2014-05-04 07:04:14

标签: android android-intent

我在eclipse中的程序遇到了一个奇怪的问题。我有多个活动,我的意图方法跳转到另一个活动。它正在致力于其他活动,但对于某项活动,它不起作用,因此,应用程序崩溃。我有以下活动意图跳:

  • GameMenu意图按钮指向> AppInfo& InstructionScreen (工作正常)
  • AppInfo意图按钮指示返回> GameMenu(工作正常)
  • Instruction意图按钮指向> ColorGame活动 (崩溃)。

以下是InstructionScreen的代码:

public class InstructionScreen extends Activity {
ViewFlipper c2s;
ImageView c2s1,c2s2;
MediaPlayer buttonClick;
Intent playGame;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_instruction_screen);
    c2s = (ViewFlipper) findViewById (R.id.click2start);
    buttonClick = MediaPlayer.create(this, R.raw.buttonclick);
    c2s.setFlipInterval(100);
    c2s.startFlipping();
    this.clickToStart();
}

private void clickToStart() {
    c2s1 = (ImageView) findViewById (R.id.c2s1);
    c2s2 = (ImageView) findViewById (R.id.c2s2);
    c2s1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            buttonClick.start();
            c2s.stopFlipping();
            playGame = new Intent(InstructionScreen.this, ColorGame.class);
            playGame.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(playGame);

        }
    });

    c2s2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            buttonClick.start();
            c2s.stopFlipping();
            playGame = new Intent(InstructionScreen.this, ColorGame.class);
            playGame.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(playGame);

        }
    });

}


}

以下是ColorGame的代码:(内容未完成,但我怀疑是问题)

public class ColorGame extends Activity {
TextView timer, score;
ViewFlipper colors;
ImageView yellow, red, green;
MediaPlayer backgroundMusic;
int gameTime, points;
Random colorNum;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_color_game);
    backgroundMusic = MediaPlayer.create(this, R.raw.colorgamebgs);
    backgroundMusic.start();

    yellow = (ImageView) findViewById(R.id.yellowbar);
    red = (ImageView) findViewById(R.id.redbar);
    green = (ImageView) findViewById(R.id.greenbar);

    colorNum = new Random();

    timer = (TextView) findViewById(R.id.timer);
    timer.setText("START");

    this.startGame();
}


private void startGame() {
    // TODO Auto-generated method stub

}


 }

此外,还有XML for ColorGame

<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"
        android:background="@drawable/colorgame"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".ColorGame" >

    <TextView
        android:id="@+id/timer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="70dp"
        android:text="@string/game_timer"
        android:textSize="100sp" />

    <TextView
        android:id="@+id/score"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/timer"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="28dp"
        android:contentDescription="@string/score_pts"
        android:text="@string/score_pts"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <ImageView
        android:id="@+id/yellowbar"
        android:layout_width="70dp"
        android:layout_height="125dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:contentDescription="@string/yellow_bar"
        android:src="@drawable/yellowbar" />

    <ImageView
        android:id="@+id/greenbar"
        android:layout_width="70dp"
        android:layout_height="125dp"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/redbar"
        android:contentDescription="@string/green_bar"
        android:src="@drawable/greenbar" />

    <ViewFlipper
        android:id="@+id/colors"
        android:layout_width="150dp"
        android:layout_height="100dp"
        android:layout_centerVertical="true"
        android:layout_below="@+id/score"
        android:visibility="invisible"
        android:layout_toLeftOf="@+id/greenbar" >

        <ImageView
            android:id="@+id/green1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/green"
            android:src="@drawable/green1" />

        <ImageView
            android:id="@+id/green2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/green"
            android:src="@drawable/green2" />

        <ImageView
            android:id="@+id/green3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/green"
            android:src="@drawable/green3" />

        <ImageView
            android:id="@+id/red1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/red"
            android:src="@drawable/red1" />

        <ImageView
            android:id="@+id/red2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/red"
            android:src="@drawable/red2" />

        <ImageView
            android:id="@+id/red3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/red"
            android:src="@drawable/red3" />

        <ImageView
            android:id="@+id/dilaw1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/dilaw"
            android:src="@drawable/yellow1" />

        <ImageView
            android:id="@+id/dilaw2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/dilaw"
            android:src="@drawable/yellow2" />

        <ImageView
            android:id="@+id/dilaw3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/dilaw"
            android:src="@drawable/yellow3" />

    </ViewFlipper>

    <ImageView
        android:id="@+id/redbar"
        android:layout_width="70dp"
        android:layout_height="125dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:contentDescription="@string/red_bar"
        android:src="@drawable/redbar" />

</RelativeLayout>

logcat的:

05-03 20:46:12.479: E/SpannableStringBuilder(28535): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-03 20:46:12.479: E/SpannableStringBuilder(28535): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-03 20:46:19.594: E/dalvikvm-heap(28535): Out of memory on a 1200016-byte allocation.
05-03 20:46:19.634: E/AndroidRuntime(28535): FATAL EXCEPTION: main
05-03 20:46:19.634: E/AndroidRuntime(28535): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ics136.colorgame/com.ics136.colorgame.ColorGame}: android.view.InflateException: Binary XML file line #42: Error inflating class <unknown>
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.app.ActivityThread.access$700(ActivityThread.java:140)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.os.Looper.loop(Looper.java:137)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.app.ActivityThread.main(ActivityThread.java:4938)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at java.lang.reflect.Method.invokeNative(Native Method)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at java.lang.reflect.Method.invoke(Method.java:511)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at dalvik.system.NativeStart.main(Native Method)
05-03 20:46:19.634: E/AndroidRuntime(28535): Caused by: android.view.InflateException: Binary XML file line #42: Error inflating class <unknown>
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.view.LayoutInflater.createView(LayoutInflater.java:619)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:666)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:316)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.app.Activity.setContentView(Activity.java:1924)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at com.ics136.colorgame.ColorGame.onCreate(ColorGame.java:22)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.app.Activity.performCreate(Activity.java:5188)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
05-03 20:46:19.634: E/AndroidRuntime(28535):    ... 11 more
05-03 20:46:19.634: E/AndroidRuntime(28535): Caused by: java.lang.reflect.InvocationTargetException
05-03 20:46:19.634: E/AndroidRuntime(28535):    at java.lang.reflect.Constructor.constructNative(Native Method)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.view.LayoutInflater.createView(LayoutInflater.java:593)
05-03 20:46:19.634: E/AndroidRuntime(28535):    ... 24 more
05-03 20:46:19.634: E/AndroidRuntime(28535): Caused by: java.lang.OutOfMemoryError
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:636)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:484)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:813)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.content.res.Resources.loadDrawable(Resources.java:2277)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.widget.ImageView.<init>(ImageView.java:126)
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.widget.ImageView.<init>(ImageView.java:116)
05-03 20:46:19.634: E/AndroidRuntime(28535):    ... 27 more

3 个答案:

答案 0 :(得分:1)

根据Logcat

"Caused by: android.view.InflateException: Binary XML file line #42: Error inflating class <unknown>
05-03 20:46:19.634: E/AndroidRuntime(28535):    at android.view.LayoutInflater.createView(LayoutInflater.java:619)"

第42行出错。请检查您的XML

答案 1 :(得分:1)

你有OutOfMemoryError

Caused by: java.lang.OutOfMemoryError  
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)

看起来您正在尝试加载大型位图或其他类似内容,请在layout处查看第{42行ColorGame Activity

Unable to start activity ComponentInfo  
{com.ics136.colorgame/com.ics136.colorgame.ColorGame}:   
android.view.InflateException: Binary XML file line #42: Error inflating class <unknown>

答案 2 :(得分:0)

你有一些例外,比如

Caused by: android.view.InflateException: Binary XML file line #42
Caused by: android.view.InflateException: Binary XML file line #42: Error inflating class <unknown>
Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.lang.OutOfMemoryError

正如@JafarKhQ所说,可能你的图片太大而且正在消耗应用程序的内存预算,请检查ColorGame中的图片是否过大。

修改

我敢打赌问题是你RelativeLayout的背景图片,正如你在评论中所说,图像差不多是2Mb,我认为问题就在那里。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"       xmlns:tools="http://schemas.android.com/tools"
    <!-- .... -->
    android:background="@drawable/colorgame"
    <!-- .... -->
>

尝试缩小图像的大小或将其删除以查找是否存在问题。