按钮没有打开新活动

时间:2015-03-09 19:36:57

标签: java android

我创建了3个按钮。每个人都应该开展不同的活动。我已经在我的设备上对其进行了测试,但它从未开启过新的活动。可能是由于main.xml文件,我在按钮上使用了onClick功能,尽管在我的主要活动中没有使用它。

public class Main extends Activity implements View.OnClickListener{

private Button playButton, rulesButton, aboutButton;

@Override
protected void onCreate(Bundle savedInstanceState) {//when the app starts this method is run
    super.onCreate(savedInstanceState);

    // Set the layout for fragment_layout.xml
    setContentView(R.layout.main_layout);

    playButton = (Button) findViewById(R.id.button_play);
    playButton.setOnClickListener(this);
    rulesButton = (Button) findViewById(R.id.button_rules);
    rulesButton.setOnClickListener(this);
    aboutButton = (Button) findViewById(R.id.button_about);
    aboutButton.setOnClickListener(this);

}



public void buttonPlayClick(){
    startActivity(new Intent("com.example.will.sata.openGLActivity"));
}

public void buttonRulesClick(){
    startActivity(new Intent("com.example.will.sata.DetailsActivity"));
}

public void buttonAboutClick(){
    startActivity(new Intent(""));
}
@Override
    public void onClick(View v) {
        switch (v.getId())
        {
            case R.id.button_play:
                buttonPlayClick();
                break;
            case R.id.button_about:
                buttonAboutClick();
                break;
            case R.id.button_rules:
                buttonRulesClick();
                break;
        }

    }
}

的AndroidManifest.xml

    <activity
        android:name=".Main"
        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="com.example.will.sata.DetailsActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <activity
        android:name="com.example.will.sata.openGLActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

main.layout.xml

android:id="@+id/button_play"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Play"
    android:onClick="PlayGame"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip"
    style="?android:attr/borderlessButtonStyle"
    android:focusable="true" />

1 个答案:

答案 0 :(得分:1)

我对您的代码进行了一些更正,希望有所帮助:

在main_layout.xml中,您不需要android:onClick="playGame",因为您在主要课程中使用View.OnClickListener

您也可以使用android:onClick="playGame",但Main.class中的代码如下:

public class Main extends Activity {

private Button playButton, rulesButton, aboutButton;

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

    playButton = (Button) findViewById(R.id.button_play);
    rulesButton = (Button) findViewById(R.id.button_rules);
    aboutButton = (Button) findViewById(R.id.button_about);
}

public void playGame(View v) {
    switch (v.getId())
    {
        case R.id.button_play:
            Intent intent = new Intent(Main.this, OpenGLActivity.class);
            startActivity(intent);
            break;
        case R.id.button_rules:
            Intent intent = new Intent(Main.this, DetailsActivity.class);
            startActivity(intent);
            break;
    }

}

要在AndroidManifest.xml中注册新活动,您只需要执行此操作

<activity android:name="com.example.will.sata.OpenGLActivity"/>
<activity android:name="com.example.will.sata.DetailsActivity"/>`

要从Main.class开始一个新活动,你必须这样做(在AndroidManifest.xml中首先注册Activity非常重要):

Intent intent = new Intent(Main.this, OpenGLActivity.class);
startActivity(intent);
Intent intent = new Intent(Main.this, DetailsActivity.class);
startActivity(intent);

提示:请注意命名约定