繁体   English   中英

java.lang.RuntimeException:无法启动活动ComponentInfo Android Eclipse

[英]java.lang.RuntimeException: Unable to start activity ComponentInfo Android Eclipse

我知道很多人都问过同样的事情,但我只是不知道发生了什么。 我正在尝试在Eclipse中创建一个计算器,但是我不断收到错误列表。 程序注意的文件中没有错误,尽管layout.xml中存在错误,但是它之前并没有引起问题,因此不会引起问题。

07-30 08:19:50.470: D/AndroidRuntime(2071): Shutting down VM
07-30 08:19:50.470: W/dalvikvm(2071): threadid=1: thread exiting with uncaught
exception (group=0x40a421f8)
07-30 08:19:50.480: E/AndroidRuntime(2071): FATAL EXCEPTION: main
07-30 08:19:50.480: E/AndroidRuntime(2071): java.lang.RuntimeException: Unable to start
activity
ComponentInfo{com.example.se.miun.chris.calculator/com.example.se.miun.chris.
calculator.MainActivity}: java.lang.NullPointerException
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
android.app.ActivityThread.access$600(ActivityThread.java:123)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
android.os.Handler.dispatchMessage(Handler.java:99)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
android.os.Looper.loop(Looper.java:137)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
android.app.ActivityThread.main(ActivityThread.java:4424)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
java.lang.reflect.Method.invokeNative(Native Method)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
java.lang.reflect.Method.invoke(Method.java:511)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
dalvik.system.NativeStart.main(Native Method)
07-30 08:19:50.480: E/AndroidRuntime(2071): Caused by: java.lang.NullPointerException
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
com.example.se.miun.chris.calculator.MainActivity.onCreate(MainActivity.java:60)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
android.app.Activity.performCreate(Activity.java:4465)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
07-30 08:19:50.480: E/AndroidRuntime(2071):     at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
07-30 08:19:50.480: E/AndroidRuntime(2071):     ... 11 more

这是我的编码。 它实际上并没有做任何事情,但是我只想运行它以查看是否遇到任何错误。 这是mainActivity.java文件。

import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {
Button Seven;
Button Eight;
Button Nine;
Button Four;
Button Five;
Button Six;
Button One;
Button Two;
Button Three;
Button Zero;
Button Point;
Button Negative;
TextView TextBox;
int x;
int y;
String z;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Seven = (Button)findViewById(R.id.NumberSeven);
    Seven.setOnClickListener(this);
    Eight = (Button)findViewById(R.id.NumberEight);
    Eight.setOnClickListener(this);
    Nine = (Button)findViewById(R.id.NumberNine);
    Nine.setOnClickListener(this);
    Four = (Button)findViewById(R.id.NumberFour);
    Four.setOnClickListener(this);
    Five = (Button)findViewById(R.id.NumberFive);
    Five.setOnClickListener(this);
    Six = (Button)findViewById(R.id.NumberSix);
    Six.setOnClickListener(this);
    One = (Button)findViewById(R.id.NumberOne);
    One.setOnClickListener(this);
    Two = (Button)findViewById(R.id.NumberTwo);
    Two.setOnClickListener(this);
    Three = (Button)findViewById(R.id.NumberThree);
    Three.setOnClickListener(this);
    Zero = (Button)findViewById(R.id.NumberZero);
    Zero.setOnClickListener(this);
    Point = (Button)findViewById(R.id.Point);
    Point.setOnClickListener(this);
    Negative = (Button)findViewById(R.id.NNegative);
    Negative.setOnClickListener(this);
    TextBox = (TextView)findViewById(R.id.Screen);
    x = (Integer) null;
    y = (Integer) null;


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

public void onClick(View One) {
    if(z == null){
        x = 1;
            TextBox.setText(x);
            TextBox.setText("diggity");
        }
        else if(z != null) {
            y = 1;
            TextBox.setText(x);
            TextBox.setText(z);
            TextBox.setText(y);
        }


    }
}

第60行:x =(整数)null; 该行将编译为以下字节码(由javap分解):

  1. aconst_null
  2. Checkcast #2; // class java / lang / Integer
  3. invokevirtual #3; //方法java / lang / Integer.intValue :()I

第三行将导致NullPointerException,因为Integer对象实际上是您的null常量:)

基本数据类型(int,long等)是Java中唯一的非对象类型。 null用于显示当前变量(对象变量)不受实际对象的支持(未分配内存)。 对于原始类型,内存会立即分配,因此它们不能具有此null状态。

因此,您应该检查“ if(x == 0)”或将其定义为Integer。

PS,不要对任何东西都使用null :)

就像这样

您不会收到太多错误,因为该应用程序无法启动。 它无法启动,因为它的onCreate()无法完成。

由于nullPointerException,onCreate()无法完成。

您将null两次转换为整数,而不是简单地实例化一个默认为0的新整数。一旦摆脱该整数,它应该可以工作。

看到?

E/AndroidRuntime(2071): Caused by: java.lang.NullPointerException
E/AndroidRuntime(2071):     at
MainActivity.onCreate(MainActivity.java:60)

我敢打赌这是第60行

x = (Integer) null;

所以改成它

x = new Integer();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM