【问题标题】:Android first app wont run, many logcat errorsAndroid 第一个应用程序无法运行,许多 logcat 错误
【发布时间】:2013-12-02 20:37:02
【问题描述】:

嘿,我在 Eclipse 中制作了一个小型计算器应用程序。但是,当我去测试它时,我的日志猫中会出现一堆错误,我将包括在内。我不确定这里出了什么问题,我是 android 和 java 编程的新手。任何帮助将非常感激。下面我将展示我的 mainActivity 类。

public class MainActivity extends Activity {
    final EditText num1Text = (EditText)findViewById(R.id.num1Text);
    final EditText num2Text = (EditText)findViewById(R.id.num2Text);
    final TextView answer = (TextView)findViewById(R.id.answer);

    final RadioGroup radioG = (RadioGroup)findViewById(R.id.radioOperation);
    final Button btnCalc = (Button)findViewById(R.id.buttonCalc);


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnCalc.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View arg0){

                if(num1Text.getText().toString().isEmpty() || num2Text.getText().toString().isEmpty())
                {
                    Toast msg = Toast.makeText(getBaseContext(),"Please enter a Number", Toast.LENGTH_LONG);
                    msg.show();
                }

                else
                {
                    double num1 = Double.parseDouble(num1Text.getText().toString());
                    double num2 = Double.parseDouble(num2Text.getText().toString());

                    int selectedOperation = radioG.getCheckedRadioButtonId();

                    final RadioButton option = (RadioButton)findViewById(selectedOperation);

                    String Option = new String(option.getText().toString());

                    if(Option.equals("Add"))
                    {
                     answer.setText(String.valueOf(num1+num2));
                    }

                    else if(Option.equals("Subtract"))
                    {
                        answer.setText(String.valueOf(num1-num2));
                    }

                    else if(Option.equals("Divide"))
                    {
                        if(num2==0.0)
                        {
                            Toast msg = Toast.makeText(getBaseContext(),"Cannot Divide By Zero",Toast.LENGTH_LONG);
                            msg.show();
                        }
                        else
                        {
                            answer.setText(String.valueOf(num1/num2));
                        }
                    }

                    else if(Option.equals("Multiply"))
                    {
                        answer.setText(String.valueOf(num1*num2));
                    }

                }
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;

    }
}

现在这是我的日志

12-02 15:27:10.485: D/AndroidRuntime(2677): Shutting down VM
12-02 15:27:10.485: W/dalvikvm(2677): threadid=1: thread exiting with uncaught exception (group=0x41a31c50)
12-02 15:27:10.485: E/AndroidRuntime(2677): FATAL EXCEPTION: main
12-02 15:27:10.485: E/AndroidRuntime(2677): Process: com.example.codyscalc, PID: 2677
12-02 15:27:10.485: E/AndroidRuntime(2677): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.codyscalc/com.example.codyscalc.MainActivity}: java.lang.NullPointerException
12-02 15:27:10.485: E/AndroidRuntime(2677):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2246)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at android.app.ActivityThread.access$700(ActivityThread.java:145)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1407)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at android.os.Handler.dispatchMessage(Handler.java:102)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at android.os.Looper.loop(Looper.java:137)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at android.app.ActivityThread.main(ActivityThread.java:5062)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at java.lang.reflect.Method.invokeNative(Native Method)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at java.lang.reflect.Method.invoke(Method.java:515)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at dalvik.system.NativeStart.main(Native Method)
12-02 15:27:10.485: E/AndroidRuntime(2677): Caused by: java.lang.NullPointerException
12-02 15:27:10.485: E/AndroidRuntime(2677):     at android.app.Activity.findViewById(Activity.java:1883)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at com.example.codyscalc.MainActivity.<init>(MainActivity.java:16)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at java.lang.Class.newInstanceImpl(Native Method)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at java.lang.Class.newInstance(Class.java:1208)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
12-02 15:27:10.485: E/AndroidRuntime(2677):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2103)
12-02 15:27:10.485: E/AndroidRuntime(2677):     ... 11 more

【问题讨论】:

    标签: java android eclipse logcat


    【解决方案1】:
    (EditText) findViewById(R.id.num1Text);
    

    在您致电 setContentView 之前,您不能这样做。

    【讨论】:

    • 非常感谢,它现在可以正常工作了。我不敢相信我自己没有弄清楚。
    【解决方案2】:

    试试喜欢

    private EditText num1Text;
    private EditText num2Text;
    private TextView answer;
    
    private RadioGroup radioG;
    private Button btnCalc ;
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
    
        num1Text = (EditText)findViewById(R.id.num1Text);
        num2Text = (EditText)findViewById(R.id.num2Text);
        answer = (TextView)findViewById(R.id.answer);
    
        radioG = (RadioGroup)findViewById(R.id.radioOperation);
        btnCalc = (Button)findViewById(R.id.buttonCalc);
    
        btnCalc.setOnClickListener(new OnClickListener(){
    
            @Override
            public void onClick(View arg0){
    
                if(num1Text.getText().toString().isEmpty() || num2Text.getText().toString().isEmpty())
                {
                    Toast msg = Toast.makeText(getBaseContext(),"Please enter a Number", Toast.LENGTH_LONG);
                    msg.show();
                }
    
                else
                {
                    double num1 = Double.parseDouble(num1Text.getText().toString());
                    double num2 = Double.parseDouble(num2Text.getText().toString());
    
                    int selectedOperation = radioG.getCheckedRadioButtonId();
    
                    final RadioButton option = (RadioButton)findViewById(selectedOperation);
    
                    String Option = new String(option.getText().toString());
    
                    if(Option.equals("Add"))
                    {
                     answer.setText(String.valueOf(num1+num2));
                    }
    
                    else if(Option.equals("Subtract"))
                    {
                        answer.setText(String.valueOf(num1-num2));
                    }
    
                    else if(Option.equals("Divide"))
                    {
                        if(num2==0.0)
                        {
                            Toast msg = Toast.makeText(getBaseContext(),"Cannot Divide By Zero",Toast.LENGTH_LONG);
                            msg.show();
                        }
                        else
                        {
                            answer.setText(String.valueOf(num1/num2));
                        }
                    }
    
                    else if(Option.equals("Multiply"))
                    {
                        answer.setText(String.valueOf(num1*num2));
                    }
    
                }
            }
        });
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    
    }
    

    【讨论】:

      猜你喜欢
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 2016-05-26
      • 2013-10-28
      相关资源
      最近更新 更多