【发布时间】:2012-02-18 02:09:37
【问题描述】:
我对 android 游戏比较陌生,每当我从第二个 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)没有检测到任何错误。 任何帮助将不胜感激
【问题讨论】:
-
是的:它抛出运行时异常并且主要活动无法启动
-
能否包含崩溃输出?
-
02-17 21:13:59.791: E/AndroidRuntime(413): java.lang.RuntimeException: 无法启动活动 ComponentInfo{mashuda.tools.calculator/mashuda.tools.calculator.CalculatorActivity} : java.lang.NullPointerException
-
它指的是行号吗?如果有,是哪一行代码?
-
它没有给出行号。程序编译得很好,但是当它运行时,它崩溃了,我的调试器无法告诉我行号