按钮点击后Android活动崩溃

时间:2014-10-31 00:59:08

标签: java android android-intent

当我点击按钮转到下一个活动时,我的应用程序崩溃了。我不知道我的Game类,菜单类,游戏布局或Manifest是否存在问题。我认为它是显而易见的。

我尝试了很多不同的方法来解决问题。我更改了清单中intent的名称,我更改了我在java类中调用activity的方式......但没有任何效果。

有人可以帮忙吗?

我认为我在清单中宣布活动的方式存在问题,但我不确定。

以下是代码:

Menu.java:

package com.example.hello_world;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Menu extends Activity implements OnClickListener {

Button clickToStart;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu_activity);
    clickToStart = (Button) findViewById(R.id.click);
    clickToStart.setOnClickListener(this);

}


@Override
public void onClick(View v) {
    Intent openGame = new Intent(getApplicationContext(), Game.class);
    startActivity(openGame);

}

}

Game.java:

package com.example.hello_world;
import android.app.Activity;
import android.os.Bundle;

public class Game extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game_activity);
}   
}

Android Manifest:

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

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="21" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".Menu"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

    <activity
        android:name=".Game"
        android:label="@string/app_name" 
        android:screenOrientation="landscape">
        <intent-filter>
            <action android:name="com.example.hello_world.GAME" />

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

</application>

游戏布局:

<?xml version="1.0" encoding="utf-8"?>
<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=".Game" >

<Button
    android:id="@+id/button1"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="18dp"
    android:text="a" />

<Button
    android:id="@+id/button2"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignBaseline="@+id/button1"
    android:layout_alignBottom="@+id/button1"
    android:layout_toRightOf="@+id/button1"
    android:text="b" />

<Button
    android:id="@+id/button4"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignBaseline="@+id/button3"
    android:layout_alignBottom="@+id/button3"
    android:layout_toRightOf="@+id/button3"
    android:text="c" />

<Button
    android:id="@+id/button5"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignBaseline="@+id/button4"
    android:layout_alignBottom="@+id/button4"
    android:layout_toRightOf="@+id/button4"
    android:text="d" />

<Button
    android:id="@+id/button6"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignParentLeft="true"
    android:layout_alignRight="@+id/button1"
    android:layout_below="@+id/button1"
    android:text="e" />

<Button
    android:id="@+id/button7"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignBaseline="@+id/button6"
    android:layout_alignBottom="@+id/button6"
    android:layout_alignRight="@+id/button2"
    android:layout_toRightOf="@+id/button6"
    android:text="f" />

<Button
    android:id="@+id/button8"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_below="@+id/button2"
    android:layout_toRightOf="@+id/button2"
    android:text="g" />

<Button
    android:id="@+id/button3"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_above="@+id/button7"
    android:layout_toRightOf="@+id/button2"
    android:text="h" />

<Button
    android:id="@+id/button9"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignBaseline="@+id/button8"
    android:layout_alignBottom="@+id/button8"
    android:layout_toLeftOf="@+id/button5"
    android:text="i" />

<Button
    android:id="@+id/button10"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_below="@+id/button4"
    android:layout_toRightOf="@+id/button4"
    android:text="j" />

<Button
    android:id="@+id/button11"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignParentLeft="true"
    android:layout_alignRight="@+id/button6"
    android:layout_below="@+id/button6"
    android:text="k" />

<Button
    android:id="@+id/button13"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignLeft="@+id/button8"
    android:layout_below="@+id/button8"
    android:text="l" />

<Button
    android:id="@+id/button14"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignBaseline="@+id/button12"
    android:layout_alignBottom="@+id/button12"
    android:layout_toRightOf="@+id/button13"
    android:text="m" />

<Button
    android:id="@+id/button16"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignParentLeft="true"
    android:layout_alignRight="@+id/button21"
    android:layout_below="@+id/button12"
    android:text="n" />

<Button
    android:id="@+id/button17"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_below="@+id/button12"
    android:layout_toLeftOf="@+id/button18"
    android:layout_toRightOf="@+id/button16"
    android:text="o" />

<Button
    android:id="@+id/button19"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignBaseline="@+id/button18"
    android:layout_alignBottom="@+id/button18"
    android:layout_toLeftOf="@+id/button15"
    android:text="p" />

<Button
    android:id="@+id/button20"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignBaseline="@+id/button17"
    android:layout_alignBottom="@+id/button17"
    android:layout_alignLeft="@+id/button10"
    android:text="q" />

<Button
    android:id="@+id/button18"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_below="@+id/button14"
    android:layout_toLeftOf="@+id/button14"
    android:text="r" />

<Button
    android:id="@+id/button15"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignLeft="@+id/button10"
    android:layout_below="@+id/button10"
    android:text="t" />

<Button
    android:id="@+id/button21"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignParentLeft="true"
    android:layout_alignRight="@+id/button6"
    android:layout_below="@+id/button16"
    android:text="u" />

<Button
    android:id="@+id/button22"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignBaseline="@+id/button21"
    android:layout_alignBottom="@+id/button21"
    android:layout_alignLeft="@+id/button17"
    android:layout_alignRight="@+id/button17"
    android:text="v" />

<Button
    android:id="@+id/button23"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignBaseline="@+id/button22"
    android:layout_alignBottom="@+id/button22"
    android:layout_alignLeft="@+id/button18"
    android:text="w" />

<Button
    android:id="@+id/button24"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignBaseline="@+id/button23"
    android:layout_alignBottom="@+id/button23"
    android:layout_toRightOf="@+id/button23"
    android:text="x" />

<Button
    android:id="@+id/button25"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignBaseline="@+id/button24"
    android:layout_alignBottom="@+id/button24"
    android:layout_alignLeft="@+id/button20"
    android:text="y" />

<Button
    android:id="@+id/button12"
    android:layout_width="@string/size"
    android:layout_height="@string/size"
    android:layout_alignRight="@+id/button7"
    android:layout_below="@+id/button6"
    android:layout_toRightOf="@+id/button6"
    android:text="s" />

错误日志:

enter image description here

3 个答案:

答案 0 :(得分:2)

您目前将按钮的所有布局尺寸设置为字符串参考。布局维度必须是整数 - 您可以将它们存储在dimens.xml中,如下所示:

<dimen name="size">16dp</dimen> <!-- change size to what you need -->

然后,使用layout_width="@dimen/size"查看您的观看次数(以及layout_height)。

答案 1 :(得分:1)

您应该使用Activity上下文来启动Activity而不是Application Context。

由于Activity扩展了Context,您可以使用 this 关键字来引用上下文。

@Override
public void onClick(View v) {
    Intent openGame = new Intent(this, Game.class);
    startActivity(openGame);

}

如果您真的想使用应用程序上下文(我认为您不打算这样做),那么我相信您必须以不同的方式在新任务中启动Activity。

答案 2 :(得分:1)

删除Game Activity的intent过滤器,并确保该类位于正确的包中

    <intent-filter>
        <action android:name="com.example.hello_world.GAME" />
        <category android:name="android.intent.category.DEFAULT" />

这不是在游戏布局中设置按钮高度和宽度的正确方法:纠正它们。

<Button
android:id="@+id/button2"
android:layout_width="@string/size"
android:layout_height="@string/size"
android:text="b" />

此致