2012-02-18 17 views
-2

2番目のJavaクラスから関数を呼び出すと、アプリケーションがクラッシュするという問題が発生しています。2番目の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マニフェストに2つ目のファイルを追加しました。 と私のコンパイラ(eclipse)はエラーを検出しません。 助けを歓迎します

+3

クラッシュ出力はありますか? –

+0

あります:実行時例外をスローし、メインアクティビティを開始できません – user1217475

+0

クラッシュ出力を含めることはできますか? –

答えて

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のアクティビティを拡張します。 Javaコードを使用して任意のビューを作成します。 Viewクラスまたはその子クラスを拡張する必要があります。ここでは、TableLayoutを拡張することができます。

または最も単純なことは、xmlでレイアウトを作成することです。 Javaコードは、開発中および理解中にも不要な複雑さをもたらします(前述のコードですでに作成されているため)。

関連する問題