2012-02-18 63 views
-2

我對android遊戲比較陌生,每當我從第二個java類調用函數時,我的應用程序崩潰都會出現問題。從第二個Java文件調用函數時發生崩潰

這是我的主要JAVA文件:

package mashuda.tools.calculator; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Typeface; 
import android.os.Bundle; 
import android.util.TypedValue; 
import android.view.Gravity; 
import android.widget.Button; 
import android.widget.TableLayout; 
import android.widget.TableRow; 
import android.widget.TextView; 

public class CalculatorActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     Drawinterface layout = new Drawinterface(); 


     setContentView(layout.drawit()); 


    } 

} 

,並調用此代碼:

package mashuda.tools.calculator; 

import android.app.Activity; 
import android.graphics.Typeface; 
import android.os.Bundle; 
import android.util.TypedValue; 
import android.view.Gravity; 
import android.widget.Button; 
import android.widget.TableLayout; 
import android.widget.TableRow; 
import android.widget.TextView; 

public class Drawinterface extends Activity { 
    /** Called when the activity is first created. 
    * @return */ 


     TableLayout drawit(){ 

      TableLayout maintable = new TableLayout(this); 

      maintable.setStretchAllColumns(true); 
      maintable.setShrinkAllColumns(true); 

      TableRow banner = new TableRow(this); 
      banner.setGravity(Gravity.CENTER_HORIZONTAL); 

      TableRow rowOutput = new TableRow(this); 
      TableRow rowSeven = new TableRow(this); 
      TableRow rowFour = new TableRow(this); 
      TableRow rowOne = new TableRow(this); 
      TableRow rowZero = new TableRow(this); 


      //answer box 
      TextView answer = new TextView(this); 
      answer.setText("ANSWER"); 

      answer.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); 

      answer.setBackgroundColor(-1); 

      answer.setGravity(Gravity.RIGHT); 
      answer.setTypeface(Typeface.SERIF); 

      TableRow.LayoutParams params = new TableRow.LayoutParams(); 
      params.span = 5; 

      //loads answer bar 
      rowOutput.addView(answer, params); 
      //first column 
      //creates 7 key 
      Button sevenkey = new Button(this); 
      sevenkey.setText("7"); 
      sevenkey.setTypeface(Typeface.DEFAULT_BOLD); 

      // creates 8 key 
      Button eightkey = new Button(this); 
      eightkey.setText("8"); 
      eightkey.setTypeface(Typeface.DEFAULT_BOLD); 

      // creates 9 key 
      Button ninekey = new Button(this); 
      ninekey.setText("9"); 
      ninekey.setTypeface(Typeface.DEFAULT_BOLD); 

      // creates division key 
      Button dividekey = new Button(this); 
      dividekey.setText("/"); 
      dividekey.setTypeface(Typeface.DEFAULT_BOLD); 

      // loads top row 
      rowSeven.addView(sevenkey); 
      rowSeven.addView(eightkey); 
      rowSeven.addView(ninekey); 
      rowSeven.addView(dividekey); 

      //creates 4 key 
      Button fourkey = new Button(this); 
      fourkey.setText("4"); 
      fourkey.setTypeface(Typeface.DEFAULT_BOLD); 

      // creates 5 key 
      Button fivekey = new Button(this); 
      fivekey.setText("5"); 
      fivekey.setTypeface(Typeface.DEFAULT_BOLD); 

      // creates 6 key 
      Button sixkey = new Button(this); 
      sixkey.setText("6"); 
      sixkey.setTypeface(Typeface.DEFAULT_BOLD); 

      // creates multiplication key 
      Button multiplykey = new Button(this); 
      multiplykey.setText("X"); 
      multiplykey.setTypeface(Typeface.DEFAULT_BOLD); 

      // loads keys into second row 
      rowFour.addView(fourkey); 
      rowFour.addView(fivekey); 
      rowFour.addView(sixkey); 
      rowFour.addView(multiplykey); 


      //creates 1 key 
      Button onekey = new Button(this); 
      onekey.setText("1"); 
      onekey.setTypeface(Typeface.DEFAULT_BOLD); 

      // creates 2 key 
      Button twokey = new Button(this); 
      twokey.setText("2"); 
      twokey.setTypeface(Typeface.DEFAULT_BOLD); 

      // creates 3 key 
      Button threekey = new Button(this); 
      threekey.setText("3"); 
      threekey.setTypeface(Typeface.DEFAULT_BOLD); 

      // creates add key 
      Button addkey = new Button(this); 
      addkey.setText("+"); 
      addkey.setTypeface(Typeface.DEFAULT_BOLD); 

      // loads keys into third row 
      rowOne.addView(onekey); 
      rowOne.addView(twokey); 
      rowOne.addView(threekey); 
      rowOne.addView(addkey); 

      //creates 0 key 
      Button zerokey = new Button(this); 
      zerokey.setText("0"); 
      zerokey.setTypeface(Typeface.DEFAULT_BOLD); 

      // creates . key 
      Button decimalkey = new Button(this); 
      decimalkey.setText("."); 
      decimalkey.setTypeface(Typeface.DEFAULT_BOLD); 

      // creates - key 
      Button negativekey = new Button(this); 
      negativekey.setText("+/-"); 
      negativekey.setTypeface(Typeface.DEFAULT_BOLD); 

      // creates equals key 
      Button equalskey = new Button(this); 
      equalskey.setText("="); 
      equalskey.setTypeface(Typeface.DEFAULT_BOLD); 

      // loads keys into fourth row 
      rowZero.addView(zerokey); 
      rowZero.addView(decimalkey); 
      rowZero.addView(negativekey); 
      rowZero.addView(equalskey); 

      // loads rows into table 
      maintable.addView(rowOutput); 
      maintable.addView(rowSeven); 
      maintable.addView(rowFour); 
      maintable.addView(rowOne); 
      maintable.addView(rowZero); 

      //sets view as maintable 
      return (maintable); 

} 
} 

我做了第二個文件添加到Android清單。 和我的編譯器(eclipse)沒有檢測到任何錯誤。 任何幫助將不勝感激

+3

有沒有碰撞輸出? – 2012-02-18 02:10:54

+0

是的:它引發運行時異常並且主要活動無法啓動 – user1217475 2012-02-18 02:19:05

+0

是否可以包含崩潰輸出? – 2012-02-18 02:20:01

回答

0

我複製你的代碼,這裏是我的錯誤,沒有答案,但是這可能幫助別人

02-17 20:00:27.020: DEBUG/dalvikvm(1176): GC freed 30619 objects/777176 bytes in 06ms 
02-17 20:32:10.830: ERROR/AndroidRuntime(1222): Caused by: java.lang.NullPointerException 
02-17 20:32:10.830: ERROR/AndroidRuntime(1222):  at android.content.ContextWrapper.getResources(ContextWrapper.java:80) 
02-17 20:32:10.830: ERROR/AndroidRuntime(1222):  at android.view.View.<init>(View.java:1777) 
02-17 20:32:10.830: ERROR/AndroidRuntime(1222):  at android.view.ViewGroup.<init>(ViewGroup.java:279) 
02-17 20:32:10.830: ERROR/AndroidRuntime(1222):  at android.widget.LinearLayout.<init>(LinearLayout.java:88) 
02-17 20:32:10.830: ERROR/AndroidRuntime(1222):  at android.widget.TableLayout.<init>(TableLayout.java:90) 
02-17 20:32:10.830: ERROR/AndroidRuntime(1222):  at com.android.demo.notepad1.Drawinterface.drawit(Drawinterface.java:20) 
02-17 20:32:10.830: ERROR/AndroidRuntime(1222):  at com.android.demo.notepad1.CalculatorActivity.onCreate(CalculatorActivity.java:25) 
02-17 20:32:10.830: ERROR/AndroidRuntime(1222):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-17 20:32:10.830: ERROR/AndroidRuntime(1222):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
0

首先沒有必要擴展了Drawinterface的Activity。當你使用java代碼創建任何視圖時。您需要擴展View類或其任何子類。在這裏你可以擴展TableLayout。

最簡單的就是在xml中創建佈局。 Java代碼在開發和理解時會產生不必要的複雜性(因爲它已經在上面的代碼中創建)。

相關問題