0

我刚开始处理这个应用程序,我觉得我做的一切都是正确的(这不是我一直在处理的第一个应用程序)但是当我尝试运行它时它崩溃了?它没有给我任何错误。

这是来自主要活动的代码,然后是来自manufest,然后是来自xml布局的代码。`

     package com.theory.game;
     import java.util.Random;
     import android.app.Activity;
     import android.content.Intent;
     import android.os.Bundle;
     import android.view.View;
     import android.widget.Button;

    public class GameTheoryActivity extends Activity implements View.OnClickListener{

    Button play, settings;
    int i;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        play.setOnClickListener(this);
        settings.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(v.getId()){
        case R.id.bPlay:

            Random irand = new Random();
            i = irand.nextInt(4);


            switch(i){
            case 0:

                Intent GoMillionair = new Intent(GameTheoryActivity.this, millionair.class);
                startActivity(GoMillionair);
                return;
            case 1:
                return;
            case 2:

                return;
            case 3:

                return; 
            }

            return;
        case R.id.bSettings:
            return; 
        }
    }
}

制造:

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

    <uses-sdk android:minSdkVersion="15" />

    <application >
        <activity
            android:name=".GameTheoryActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".millionair" >
            <intent-filter>
                <action android:name="com.theory.game.MILLIONAIR" />

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

</manifest>

主要的.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/backgroundimage"
    android:orientation="vertical" >


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="390dp"
        android:orientation="vertical" >
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >


        <Button
            android:id="@+id/bPlay"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.38"
            android:background="@drawable/play" />

        <Button
            android:id="@+id/bSettings"
            android:layout_width="match_parent"
            android:layout_height="58dp"
            android:layout_weight="0.36"
            android:background="@drawable/settings" />
    </LinearLayout>

</LinearLayout> 

`

我还有一个叫做百万航空的班级,这只是一个普通的班级,没什么,我猜没有错。请检查这是怎么回事,让我知道为什么我的应用程序不会开始说它“已停止工作”.. 谢谢

4

3 回答 3

1

您可能会得到一个NullPointerException,因为您忘记将按钮分配给您的字段 ( Button play, settings;)。

以下是如何分配它们的示例:

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    play = (Button) findViewById(R.id.bPlay);
    settings = (Button) findViewById(R.id.bSettings);
}
于 2012-07-02T23:39:05.473 回答
1

我的猜测是你得到一个 NullPointerException 因为playsettings对象都是空的。

将您的 onCreate() 更改为如下所示:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    play = (Button)findViewById(R.id.bPlay);
    settings = (Button)findViewById(R.id.bSettings);

    play.setOnClickListener(this);
    settings.setOnClickListener(this);

}
于 2012-07-02T23:35:07.180 回答
0

当您尝试在 onCreate() 方法期间使用 then 时,看起来 play 和 settings 都将为空:

play.setOnClickListener(this);
settings.setOnClickListener(this);

确保像这样启动它们:

play = (Button)findViewById(R.id.bPlay);
settings = (Button)findViewById(R.id.bSettings)
play.setOnClickListener(this);
settings.setOnClickListener(this);
于 2012-07-02T23:35:14.823 回答