更改默认布局时应用程序崩溃说不幸的是app已经停止

时间:2014-03-22 20:02:05

标签: java android xml android-layout

我制作了一个只有1个屏幕activity_main.xml的Android应用程序。 当我运行应用程序时它工作正常。 后来我在res / layouts中添加了另一个文件welcome.xml。 现在,当我设置 setContentView(R.layout.welcome);

该应用程序崩溃。这是我的welcome.xml代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/head"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="80dp"
        android:text="2D X&amp;O"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="50sp" />

    <Button
        android:id="@+id/go"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Start"
        android:textSize="20sp" />

</RelativeLayout>

MainActivity.java:

package com.nhw.dxo;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends Activity {


    char[][] a=new char[3][3];
        char b=' ';
        int i=0,j=0,k=0,o=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome);          
        for(j=0;j<3;j++)
        {
            for(k=0;k<3;k++)
            {
                a[j][k]=' ';
            }
        }

        Button btn1 = (Button)findViewById(R.id.btn1);
        Button btn2 = (Button)findViewById(R.id.btn2);
        Button btn3 = (Button)findViewById(R.id.btn3);
        Button btn4 = (Button)findViewById(R.id.btn4);
        Button btn5 = (Button)findViewById(R.id.btn5);
        Button btn6 = (Button)findViewById(R.id.btn6);
        Button btn7 = (Button)findViewById(R.id.btn7);
        Button btn8 = (Button)findViewById(R.id.btn8);
        Button btn9 = (Button)findViewById(R.id.btn9);

        btn1.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {   j=0;k=0;
                if((a[j][k]==' ')&&(o==0)){
                TextView op1 = (TextView)findViewById(R.id.btn1);
                op1.setText(String.valueOf(p(b,i)));a[0][0]=p(b,i);
                o=check(a,j,k,o);i++;
            }
        }});
        btn2.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {j=0;k=1;
            if((a[j][k]==' ')&&(o==0)){
                TextView op2 = (TextView)findViewById(R.id.btn2);
                op2.setText(String.valueOf(p(b,i)));a[0][1]=p(b,i);
                o=check(a,j,k,o);i++;
        }}});
        btn3.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {j=0;k=2;
            if((a[j][k]==' ')&&(o==0)){
                TextView op3 = (TextView)findViewById(R.id.btn3);
                op3.setText(String.valueOf(p(b,i)));a[0][2]=p(b,i);
                o=check(a,j,k,o);i++;
        }}});
        btn4.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {j=1;k=0;
            if((a[j][k]==' ')&&(o==0)){
                TextView op4 = (TextView)findViewById(R.id.btn4);
                op4.setText(String.valueOf(p(b,i)));a[1][0]=p(b,i);
                o=check(a,j,k,o);i++;
        }}});
        btn5.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {j=1;k=1;
            if((a[j][k]==' ')&&(o==0)){
                TextView op5 = (TextView)findViewById(R.id.btn5);
                op5.setText(String.valueOf(p(b,i)));a[1][1]=p(b,i);
                o=check(a,j,k,o);i++;
        }}});
        btn6.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {j=1;k=2;
            if((a[j][k]==' ')&&(o==0)){
                TextView op6 = (TextView)findViewById(R.id.btn6);
                op6.setText(String.valueOf(p(b,i)));a[1][2]=p(b,i);
                o=check(a,j,k,o);i++;
        }}});
        btn7.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {j=2;k=0;
            if((a[j][k]==' ')&&(o==0)){
                TextView op7 = (TextView)findViewById(R.id.btn7);
                op7.setText(String.valueOf(p(b,i)));a[2][0]=p(b,i);
                o=check(a,j,k,o);i++;
        }}});
        btn8.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {j=2;k=1;
            if((a[j][k]==' ')&&(o==0)){
                TextView op8 = (TextView)findViewById(R.id.btn8);
                op8.setText(String.valueOf(p(b,i)));a[2][1]=p(b,i);
                o=check(a,j,k,o);i++;
            }}});
        btn9.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {j=2;k=2;
            if((a[j][k]==' ')&&(o==0)){
                TextView op9 = (TextView)findViewById(R.id.btn9);
                op9.setText(String.valueOf(p(b,i)));a[2][2]=p(b,i);
                o=check(a,j,k,o);i++;
            }}});
    }

    public char p(char b,int i)
    {
        if(i%2==0) {b='X';}
        else {b='O';}
        return b;
    }

    public int check(char[][] a,int j, int k,int o)
    {
        if(a[j][0]==a[j][1]&&a[j][1]==a[j][2]&&a[j][k]!=' ') {o+=1;}
        if(a[0][k]==a[1][k]&&a[1][k]==a[2][k]&&a[j][k]!=' ') {o+=1;} 
        if(((a[0][0]==a[1][1]&&a[1][1]==a[2][2])||(a[0][2]==a[1][1]&&a[1][1]==a[2][0]))&&a[1][1]!=' ') {o+=1;}
        TextView txt = (TextView)findViewById(R.id.txt);
        if(o!=0){txt.setText("GG");}
        else {
            if(i%2==1) {txt.setText("Player 1 : X");}
            else {txt.setText("Player 2 : O");}
        }
        return o;
    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

1 个答案:

答案 0 :(得分:1)

您的welcome.xml没有您初始化的所有按钮。您拥有的只是welcome.xml

中的一个按钮和文本视图

findViewById在设置为活动的当前视图层次结构中查找视图。您可能会NullPointerException导致崩溃