Android Studio模拟器崩溃

时间:2016-03-29 18:11:37

标签: java android runtime-error tic-tac-toe

我必须使用android studio实现Tic Tac Toe游戏。我有Main MenuOne Player选项,Two Player选项和About选项。当我点击One Player时,它会转到另一个带有9个按钮的活动,但是当我点击其中一个空格时,应用程序会崩溃。

这是content_one_player.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.erin.mytictactoe.OnePlayer"
tools:showIn="@layout/activity_one_player">

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/one_player"
    android:id="@+id/textView2"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<Button
    android:layout_width="110dp"
    android:layout_height="110dp"
    android:text="@string/button1"
    android:id="@+id/button4"
    android:layout_below="@+id/textView2"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<Button
    android:layout_width="110dp"
    android:layout_height="110dp"
    android:text="@string/button2"
    android:id="@+id/button5"
    android:layout_below="@+id/textView2"
    android:layout_alignRight="@+id/button8"
    android:layout_alignEnd="@+id/button8"
    android:layout_alignLeft="@+id/button8"
    android:layout_alignStart="@+id/button8" />

<Button
    android:layout_width="110dp"
    android:layout_height="110dp"
    android:text="@string/button3"
    android:id="@+id/button6"
    android:layout_below="@+id/textView2"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<Button
    android:layout_width="110dp"
    android:layout_height="110dp"
    android:text="@string/button4"
    android:id="@+id/button7"
    android:layout_below="@+id/button4"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<Button
    android:layout_width="110dp"
    android:layout_height="110dp"
    android:text="@string/button5"
    android:id="@+id/button8"
    android:layout_alignBottom="@+id/button7"
    android:layout_centerHorizontal="true" />

<Button
    android:layout_width="110dp"
    android:layout_height="110dp"
    android:text="@string/button6"
    android:id="@+id/button9"
    android:layout_alignBottom="@+id/button8"
    android:layout_alignLeft="@+id/button6"
    android:layout_alignStart="@+id/button6" />

<Button
    android:layout_width="110dp"
    android:layout_height="110dp"
    android:text="@string/button7"
    android:id="@+id/button10"
    android:layout_below="@+id/button7"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<Button
    android:layout_width="110dp"
    android:layout_height="110dp"
    android:text="@string/button8"
    android:id="@+id/button11"
    android:layout_alignBottom="@+id/button10"
    android:layout_centerHorizontal="true" />

<Button
    android:layout_width="110dp"
    android:layout_height="110dp"
    android:text="@string/button9"
    android:id="@+id/button12"
    android:layout_alignBottom="@+id/button11"
    android:layout_alignLeft="@+id/button9"
    android:layout_alignStart="@+id/button9" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/whose_turn"
    android:id="@+id/player"
    android:layout_marginTop="54dp"
    android:layout_below="@+id/button10"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

</RelativeLayout>

这是我的OnePlayer.java:

package com.example.erin.mytictactoe;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.app.Dialog;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class OnePlayer extends Activity {

Button bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8, bt9;
AlertDialog.Builder alert, error;
TextView player, textView2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_one_player);
    setClickEvent();
}
public void setClickEvent()
{
    bt1=(Button)findViewById(R.id.button4);
    bt2=(Button)findViewById(R.id.button5);
    bt3=(Button)findViewById(R.id.button6);
    bt4=(Button)findViewById(R.id.button7);
    bt5=(Button)findViewById(R.id.button8);
    bt6=(Button)findViewById(R.id.button9);
    bt7=(Button)findViewById(R.id.button10);
    bt8=(Button)findViewById(R.id.button11);
    bt9=(Button)findViewById(R.id.button12);
    bt1.setOnClickListener(new Clicker());
    bt2.setOnClickListener(new Clicker());
    bt3.setOnClickListener(new Clicker());
    bt4.setOnClickListener(new Clicker());
    bt5.setOnClickListener(new Clicker());
    bt6.setOnClickListener(new Clicker());
    bt7.setOnClickListener(new Clicker());
    bt8.setOnClickListener(new Clicker());
    bt9.setOnClickListener(new Clicker());
}
public void Reset()
{
    bt1.setText(" ");
    bt2.setText(" ");
    bt3.setText(" ");
    bt4.setText(" ");
    bt5.setText(" ");
    bt6.setText(" ");
    bt7.setText(" ");
    bt8.setText(" ");
    bt9.setText(" ");
    player.setText("Player 1's turn");
    textView2 = (TextView)findViewById(R.id.textView2);
    textView2.setText("One Player: New Game");
}
public void Create()
{
    alert=new AlertDialog.Builder(this);
    alert.setTitle("Winner");
    alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int y) {
            Reset();
        }
    });
    error= new AlertDialog.Builder(this);
    error.setTitle("Error!");
    error.setMessage("This spot is taken!");
    error.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int y) {

        }
    });
}
class Clicker implements OnClickListener
{
    public void onClick(View v)
    {
        player=(TextView)findViewById(R.id.player);
        String x=player.getText().toString();
        Button b = (Button)v;

        if(b.getText().toString().equals(" ")) {

            if (x.equals("Player 1 turn")) {
                b.setText("X");
                player.setText("Player 2 turn");
            } else if (x.equals("Player 2 turn")) {
                b.setText("O");
                player.setText("Player 1 turn");
            }
        }
        else
        {
            error.show();
        }
    }
}

public void Winner()
{
    Create();
if((bt1.getText().toString().equals("X") && bt2.getText().toString().equals("X") && bt3.getText().toString().equals("X")) || (bt4.getText().toString().equals("X") && bt5.getText().toString().equals("X") && bt6.getText().toString().equals("X")) || (bt7.getText().toString().equals("X") && bt8.getText().toString().equals("X") && bt9.getText().toString().equals("X")) || (bt1.getText().toString().equals("X") && bt5.getText().toString().equals("X") &&bt9.getText().toString().equals("X")) || (bt3.getText().toString().equals("X") && bt5.getText().toString().equals("X") && bt7.getText().toString().equals("X")) || (bt1.getText().toString().equals("X") && bt4.getText().toString().equals("X" )&&bt7.getText().toString().equals("X")) ||(bt2.getText().toString().equals("X") && bt5.getText().toString().equals("X") && bt8.getText().toString().equals("X")) || (bt3.getText().toString().equals("X") && bt6.getText().toString().equals("X") && bt9.getText().toString().equals("X")))
    {
        alert.setMessage("Winner is Player 1");
        alert.show();
    }
    else if((bt1.getText().toString().equals("O") && bt2.getText().toString().equals("O") && bt3.getText().toString().equals("O")) ||(bt4.getText().toString().equals("O") && bt5.getText().toString().equals("O") && bt6.getText().toString().equals("O") ||(bt7.getText().toString().equals("O") && bt8.getText().toString().equals("O") && bt9.getText().toString().equals("O")) ||(bt1.getText().toString().equals("O") && bt5.getText().toString().equals("O") && bt9.getText().toString().equals("O")) ||(bt3.getText().toString().equals("O") && bt5.getText().toString().equals("O") && bt7.getText().toString().equals("O")) ||(bt1.getText().toString().equals("O") && bt4.getText().toString().equals("O") && bt7.getText().toString().equals("O")) ||(bt2.getText().toString().equals("O") && bt5.getText().toString().equals("O") && bt8.getText().toString().equals("O")) ||(bt3.getText().toString().equals("O") && bt6.getText().toString().equals("O") && bt9.getText().toString().equals("O"))) {
        alert.setMessage("Winner is Player 2");
        alert.show();
    }
    else
    {
        alert.setMessage("It's a draw!");
        alert.show();
    }
}
}

这是我不断得到的错误:

03-29 12:33:26.408 5352-5359/? E/art: Failed sending reply to debugger: Broken pipe

这里是完整的堆栈跟踪:

03-29 12:33:26.350 5352-5352/? I/art: Not late-enabling -Xcheck:jni (already on)
03-29 12:33:26.350 5352-5352/? I/art: Late-enabling JIT
03-29 12:33:26.357 5352-5352/? I/art: JIT created with code_cache_capacity=2MB compile_threshold=1000
03-29 12:33:26.408 5352-5359/? E/art: Failed sending reply to debugger: Broken pipe
03-29 12:33:26.408 5352-5359/? I/art: Debugger is no longer active
03-29 12:33:26.418 5352-5352/? W/System: ClassLoader referenced unknown path: /data/app/com.example.erin.mytictactoe-2/lib/x86
03-29 12:33:26.555 5352-5370/? D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
03-29 12:33:26.605 5352-5370/? I/OpenGLRenderer: Initialized EGL, version 1.4
03-29 12:33:26.651 5352-5370/? W/EGL_emulation: eglSurfaceAttrib not implemented
03-29 12:33:26.652 5352-5370/? W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xad7204e0, error=EGL_SUCCESS

我该怎么做才能解决这个问题?

0 个答案:

没有答案