从第二个Java文件调用函数时崩溃
我对android游戏比较陌生,每当我从第二个java类调用函数时,我的应用程序就会崩溃 这是我的主JAVA文件:从第二个Java文件调用函数时崩溃,java,android,crash,Java,Android,Crash,我对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; i
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)没有检测到任何错误。
任何帮助都将不胜感激而不是使用xml资源文件以编程方式创建表格布局
这里有一个关于这个的教程:我复制了你的代码,这是我得到的错误,还没有答案,但这可能会帮助其他人
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)
02-17 20:00:27.020:DEBUG/dalvikvm(1176):GC在06毫秒内释放了30619个对象/777176字节
02-17 20:32:10.830:错误/AndroidRuntime(1222):由以下原因引起:java.lang.NullPointerException
02-17 20:32:10.830:ERROR/AndroidRuntime(1222):位于android.content.ContextWrapper.getResources(ContextWrapper.java:80)
02-17 20:32:10.830:ERROR/AndroidRuntime(1222):在android.view.view(view.java:1777)上
02-17 20:32:10.830:ERROR/AndroidRuntime(1222):在android.view.ViewGroup。(ViewGroup.java:279)
02-17 20:32:10.830:ERROR/AndroidRuntime(1222):位于android.widget.LinearLayout.(LinearLayout.java:88)
02-17 20:32:10.830:ERROR/AndroidRuntime(1222):在android.widget.TableLayout.(TableLayout.java:90)
02-17 20:32:10.830:ERROR/AndroidRuntime(1222):位于com.android.demo.notepad1.Drawinterface.drawit(Drawinterface.java:20)
02-17 20:32:10.830:ERROR/AndroidRuntime(1222):位于com.android.demo.notepad1.CalculatorActivity.onCreate(CalculatorActivity.java:25)
02-17 20:32:10.830:ERROR/AndroidRuntime(1222):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-17 20:32:10.830:ERROR/AndroidRuntime(1222):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
首先,无需扩展Drawinterface的活动。当您使用java代码创建任何视图时。您需要扩展视图类或其任何子类。在这里您可以扩展TableLayout
或者最简单的事情是用xml创建布局。Java代码在开发过程中甚至在理解过程中都会造成不必要的复杂性(正如上面代码中已经创建的那样)。是的:它会引发运行时异常,并且主活动无法启动可以包含崩溃输出吗?02-17 21:13:59.791:E/AndroidRuntime(413):java.lang.RuntimeException:无法启动活动组件信息{mashuda.tools.calculator/mashuda.tools.calculator.CalculatorActivity}:java.lang.NullPointerException它是否引用行号?如果是,它是哪一行代码?它没有给出行号。程序编译得很好,但运行时会崩溃,调试器无法告诉我行号