2014-10-31 84 views
0

当我点击按钮进入下一个活动时,我的应用程序崩溃。我不知道这是我的Game类,Menu类,游戏布局还是Manifest的问题。我认为这是明显的。Android活动在按钮点击时崩溃

我试过很多不同的方法来解决问题。我改变了清单中intent的名称,改变了我在java类中调用活动的方式......但是没有任何工作。

有人可以帮忙吗?

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

下面是代码:

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清单:

<?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

+1

什么是错误/崩溃/调试日志? – 2014-10-31 01:08:09

+0

只是将错误日志添加到原始帖子。这有帮助吗? – user2456977 2014-10-31 01:15:19

+0

在您的layout.xml文件中添加layoutWidth属性,在二进制8中的日志中显示错误! – 2014-10-31 01:19:14

回答

2

您目前拥有所有的按钮设置为字符串引用的布局尺寸。布局尺寸必须是整数 - 你可以在dimens.xml像这样这些存储:

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

然后,使用layout_width="@dimen/size"您的视图(layout_height以及)。

+0

非常感谢!这工作。 – user2456977 2014-10-31 01:30:36

1

你应该使用活动背景下发起的活动,而不是应用程序上下文。

由于Activity扩展了上下文,因此您可以使用这个关键字来引用上下文。

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

}

如果你真的想使用的应用程序上下文(我不认为你的意思做),那么我相信你将不得不开始以不同的方式活动,在新任务。

+0

我试过了,但仍然崩溃,尽管 – user2456977 2014-10-31 01:19:23

+0

刚刚看到堆栈跟踪,您必须在所有布局文件中指定layout_width和layout_height。你也应该只在你的清单中有一个启动意图过滤器,例如@harikris提到 – vman 2014-10-31 01:25:38

+0

另外,你应该使用dimens.xml来指定widthn和height作为类型dimen,而不是string.xml类型的字符串。或者你可以使用match_parent和wrap_content。 – vman 2014-10-31 01:28:25

1

的游戏活动中删除意图过滤器,确保类位于正确的软件包

<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" /> 

问候