2013-01-18 256 views
-6

我想寫一個井字遊戲/應用程序,但我無法得到它的工作。這段代碼有什麼問題?它在啓動時崩潰。你能幫我麼???應用程序在啓動時崩潰。

package com.example.tictactoe; 

import android.os.Bundle; 
import android.app.Activity; 
import android.util.DisplayMetrics; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends Activity implements OnClickListener { 

    // Spremenljivke 
    int width, height; 
    int s1, s2;// score 
    int pot;// Poteza 
    int round;// Runda 
    int i;// for... 
    Button b1, b2, b3, b4, b5, b6, b7, b8, b9; 
    TextView rez1, rez2, runda; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.activity_main); 

     s1 = 0; 
     s2 = 0; 

     /*DisplayMetrics metrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(metrics); 

     height = metrics.heightPixels; 
     width = metrics.widthPixels;*/ 

     b1.findViewById(R.id.button1); 
     b2.findViewById(R.id.button2); 
     b3.findViewById(R.id.button3); 
     b4.findViewById(R.id.button4); 
     b5.findViewById(R.id.button5); 
     b6.findViewById(R.id.button6); 
     b7.findViewById(R.id.button7); 
     b8.findViewById(R.id.button8); 
     b9.findViewById(R.id.button9); 

     b1.setOnClickListener(this); 
     b2.setOnClickListener(this); 
     b3.setOnClickListener(this); 
     b4.setOnClickListener(this); 
     b5.setOnClickListener(this); 
     b6.setOnClickListener(this); 
     b7.setOnClickListener(this); 
     b8.setOnClickListener(this); 
     b9.setOnClickListener(this); 


      rez1.findViewById(R.id.textView1); rez2.findViewById(R.id.textView3); 
      runda.findViewById(R.id.textView2); 
      rez1.setText(""+s1); rez2.setText(""+rez2); runda.setText(""+round); 


    } 

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

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     switch(v.getId()){ 
     case R.id.button1: 
      rez1.setText("inside"); 
      break; 
     case R.id.button2: 
      rez1.setText("inside"); 
      break; 
     case R.id.button3: 
      rez1.setText("inside"); 
      break; 
     case R.id.button4: 
      rez1.setText("inside"); 
      break; 
     case R.id.button5: 
      rez1.setText("inside"); 
      break; 
     case R.id.button6: 
      rez1.setText("inside"); 
      break; 
     case R.id.button7: 
      rez1.setText("inside"); 
      break; 
     case R.id.button8: 
      rez1.setText("inside"); 
      break; 
     case R.id.button9: 
      rez1.setText("inside"); 
      break; 
     } 
    } 

} 
+1

錯誤信息會有幫助 – Viper

+0

我建議人們不介意幫助處理特定的作業問題,但如果沒有特定問題發帖,則不太可能得到肯定的答覆。 – Matthew

回答

2

您正在錯誤地分配所有視圖。相反的:

b1.findViewById(R.id.button1); 

用途:

b1 = (Button) findViewById(R.id.button1); 

等了你所有的其他意見。對於TextViews使用:

rez1 = (TextView) findViewById(R.id.textView1); 

你的另一隻手的setOnClickListener()setText()用法是正確的,所以不要改變這種狀況。

3

你宣佈你的按鈕是這樣的:

b1.findViewById(R.id.button1); 
     b2.findViewById(R.id.button2); 
     b3.findViewById(R.id.button3); 
     b4.findViewById(R.id.button4); 
     b5.findViewById(R.id.button5); 
     b6.findViewById(R.id.button6); 
     b7.findViewById(R.id.button7); 
     b8.findViewById(R.id.button8); 
     b9.findViewById(R.id.button9); 

替換有:

b1=(Button)findViewById(R.id.button1); 

與其他視圖(B2,B3 ...,rez1,rez2 ..)那樣的。