2013-12-16 37 views
-3

我正在嘗試構建一個計算器,並且問題似乎與此Java代碼有關。我使用Android SDK的標準Java代碼嘗試了它,並且佈局工作正常。但是當我加載下面的代碼時,它不會。我不明白爲什麼它不會加載。我是新來的java,這是殺了我。請幫忙。 (我把logcat的底部。)應用程序如何不加載此Java代碼?

package com.haildark.calculator; 

import android.os.Bundle; 
import android.app.Activity; 
import android.text.Editable; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class Calc extends Activity implements View.OnClickListener{ 

    Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, mul, div, cancel, equal; 
    EditText disp; 
    int op1; 
    int op2; 
    String optr; 

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

     one = (Button) findViewById(R.id.onebtn); 
     two = (Button) findViewById(R.id.twobtn); 
     three = (Button) findViewById(R.id.threebtn); 
     four = (Button) findViewById(R.id.fourbtn); 
     five = (Button) findViewById(R.id.fivebtn); 
     six = (Button) findViewById(R.id.sixbtn); 
     seven = (Button) findViewById(R.id.sevenbtn); 
     eight = (Button) findViewById(R.id.eightbtn); 
     nine = (Button) findViewById(R.id.ninebtn); 
     zero = (Button) findViewById(R.id.zerobtn); 
     add = (Button) findViewById(R.id.addbtn); 
     sub = (Button) findViewById(R.id.minusbtn); 
     mul = (Button) findViewById(R.id.multiplicationbtn); 
     div = (Button) findViewById(R.id.divisionbtn); 
     cancel = (Button) findViewById(R.id.cbtn); 
     equal = (Button) findViewById(R.id.equalbtn); 

     disp = (EditText) findViewById(R.id.editText1); 

     try{ 
      one.setOnClickListener(this); 

      two.setOnClickListener(this); 

      three.setOnClickListener(this); 

      four.setOnClickListener(this); 

      five.setOnClickListener(this); 

      six.setOnClickListener(this); 

      seven.setOnClickListener(this); 

      eight.setOnClickListener(this); 

      nine.setOnClickListener(this); 

      zero.setOnClickListener(this); 

      cancel.setOnClickListener(this); 

      add.setOnClickListener(this); 

      sub.setOnClickListener(this); 

      mul.setOnClickListener(this); 

      div.setOnClickListener(this); 

      equal.setOnClickListener(this); 
     } 
     catch(Exception e){ 

     } 
    } 
    public void operation(){ 
     if(optr.equals("+")){ 
      op2 = Integer.parseInt(disp.getText().toString()); 
      disp.setText(""); 
      op1 = op1 + op2; 
      disp.setText("Result : " + Integer.toString(op1)); 
     } 
     else if(optr.equals("-")){ 
      op2 = Integer.parseInt(disp.getText().toString()); 
      disp.setText(""); 
      op1 = op1 - op2; 
      disp.setText("Result : " + Integer.toString(op1)); 
     } 
     else if(optr.equals("*")){ 
      op2 = Integer.parseInt(disp.getText().toString()); 
      disp.setText(""); 
      op1 = op1 * op2; 
      disp.setText("Result : " + Integer.toString(op1)); 
     } 
     else if(optr.equals("/")){ 
      op2 = Integer.parseInt(disp.getText().toString()); 
      disp.setText(""); 
      op1 = op1/op2; 
      disp.setText("Result : " + Integer.toString(op1)); 
     } 
    } 
    @Override 
    public void onClick(View arg0) { 
     Editable str = disp.getText(); 
     switch(arg0.getId()){ 
      case R.id.onebtn: 
       if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       str = str.append(two.getText()); 
       disp.setText(str); 
      break; 
      case R.id.twobtn: 
       if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       str = str.append(two.getText()); 
       disp.setText(str); 
      break; 
      case R.id.threebtn: 
       if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       str = str.append(three.getText()); 
       disp.setText(str); 
      break; 
      case R.id.fourbtn: 
       if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       str = str.append(four.getText()); 
       disp.setText(str); 
      break; 
      case R.id.fivebtn: 
       if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       str = str.append(five.getText()); 
       disp.setText(str); 
      break; 
      case R.id.sixbtn: 
       if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       str = str.append(six.getText()); 
       disp.setText(str); 
      break; 
      case R.id.sevenbtn: 
       if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       str = str.append(eight.getText()); 
       disp.setText(str); 
      break; 
      case R.id.eightbtn: 
       if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       str = str.append(nine.getText()); 
       disp.setText(str); 

      break; 
      case R.id.ninebtn: 
       if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       str = str.append(zero.getText()); 
       disp.setText(str); 

      break; 
      case R.id.cbtn: 
       op1 = 0; 
       op2 = 0; 
       disp.setText(""); 
       disp.setHint("Perform Operation :)"); 

      break; 
      case R.id.addbtn: 
       optr = "+"; 
       if(op1 == 0){ 
        op1 = Integer.parseInt(disp.getText().toString()); 
        disp.setText(""); 
       } 
       else if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       else{ 
        op2 = Integer.parseInt(disp.getText().toString()); 
        disp.setText(""); 
        op1 = op1 + op2; 
        disp.setText("Result : " + Integer.toString(op1)); 
       } 
      break; 
      case R.id.minusbtn: 
       optr = "-"; 
       if(op1 == 0){ 
        op1 = Integer.parseInt(disp.getText().toString()); 
        disp.setText(""); 
       } 
       else if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       else{ 
        op2 = Integer.parseInt(disp.getText().toString()); 
        disp.setText(""); 
        op1 = op1 - op2; 
        disp.setText("Result : " + Integer.toString(op1)); 
       } 
      break; 
      case R.id.multiplicationbtn: 
       optr = "*"; 
       if(op1 == 0){ 
        op1 = Integer.parseInt(disp.getText().toString()); 
        disp.setText(""); 
       } 
       else if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       else{ 
        op2 = Integer.parseInt(disp.getText().toString()); 
        disp.setText(""); 
        op1 = op1 * op2; 
        disp.setText("Result : " + Integer.toString(op1)); 
       } 
      break; 
      case R.id.divisionbtn: 
       optr = "/"; 
       if(op1 == 0){ 
        op1 = Integer.parseInt(disp.getText().toString()); 
        disp.setText(""); 
       } 
       else if(op2 != 0){ 
        op2 = 0; 
        disp.setText(""); 
       } 
       else{ 
        op2 = Integer.parseInt(disp.getText().toString()); 
        disp.setText(""); 
        op1 = op1/op2; 
        disp.setText("Result : " + Integer.toString(op1)); 
       } 
      break; 
      case R.id.equalbtn: 
       if(!optr.equals(null)){ 
        if(op2 != 0){ 
         if(optr.equals("+")){ 
          disp.setText(""); 
          /*op1 = op1 + op2;*/ 
          disp.setText("Result : " + Integer.toString(op1)); 
         } 
         else if(optr.equals("-")){ 
          disp.setText("");/* 
          op1 = op1 - op2;*/ 
          disp.setText("Result : " + Integer.toString(op1)); 
         } 
         else if(optr.equals("*")){ 
          disp.setText("");/* 
          op1 = op1 * op2;*/ 
          disp.setText("Result : " + Integer.toString(op1)); 
         } 
         else if(optr.equals("/")){ 
          disp.setText("");/* 
          op1 = op1/op2;*/ 
          disp.setText("Result : " + Integer.toString(op1)); 
         } 
        } 
        else{ 
         operation(); 
        } 
       } 
      break; 
     } 
    } 
} 

logcat的:

12-15 19:59:04.780: D/gralloc_goldfish(537): Emulator without GPU emulation detected. 
12-15 19:59:04.840: W/TextLayoutCache(537): computeValuesWithHarfbuzz -- need to force to single run 
12-15 19:59:05.800: D/AndroidRuntime(537): Shutting down VM 
12-15 19:59:05.800: W/dalvikvm(537): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 
12-15 19:59:05.850: E/AndroidRuntime(537): FATAL EXCEPTION: main 
12-15 19:59:05.850: E/AndroidRuntime(537): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.haildark.calculator/com.one.slate.Calc}: java.lang.ClassNotFoundException: com.one.slate.Calc 
12-15 19:59:05.850: E/AndroidRuntime(537): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1879) 
12-15 19:59:05.850: E/AndroidRuntime(537): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
12-15 19:59:05.850: E/AndroidRuntime(537): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
12-15 19:59:05.850: E/AndroidRuntime(537): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
12-15 19:59:05.850: E/AndroidRuntime(537): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-15 19:59:05.850: E/AndroidRuntime(537): at android.os.Looper.loop(Looper.java:137) 
12-15 19:59:05.850: E/AndroidRuntime(537): at android.app.ActivityThread.main(ActivityThread.java:4340) 
12-15 19:59:05.850: E/AndroidRuntime(537): at java.lang.reflect.Method.invokeNative(Native Method) 
12-15 19:59:05.850: E/AndroidRuntime(537): at java.lang.reflect.Method.invoke(Method.java:511) 
12-15 19:59:05.850: E/AndroidRuntime(537): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
12-15 19:59:05.850: E/AndroidRuntime(537): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
12-15 19:59:05.850: E/AndroidRuntime(537): at dalvik.system.NativeStart.main(Native Method) 
12-15 19:59:05.850: E/AndroidRuntime(537): Caused by: java.lang.ClassNotFoundException: com.one.slate.Calc 
12-15 19:59:05.850: E/AndroidRuntime(537): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
12-15 19:59:05.850: E/AndroidRuntime(537): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
12-15 19:59:05.850: E/AndroidRuntime(537): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
12-15 19:59:05.850: E/AndroidRuntime(537): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
12-15 19:59:05.850: E/AndroidRuntime(537): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1870) 
12-15 19:59:05.850: E/AndroidRuntime(537): ... 11 more 
12-15 19:59:18.140: D/gralloc_goldfish(553): Emulator without GPU emulation detected. 
12-15 19:59:18.181: W/TextLayoutCache(553): computeValuesWithHarfbuzz -- need to force to single run 
12-15 19:59:19.191: D/AndroidRuntime(553): Shutting down VM 
12-15 19:59:19.191: W/dalvikvm(553): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 
12-15 19:59:19.231: E/AndroidRuntime(553): FATAL EXCEPTION: main 
12-15 19:59:19.231: E/AndroidRuntime(553): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.haildark.calculator/com.one.slate.Calc}: java.lang.ClassNotFoundException: com.one.slate.Calc 
12-15 19:59:19.231: E/AndroidRuntime(553): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1879) 
12-15 19:59:19.231: E/AndroidRuntime(553): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
12-15 19:59:19.231: E/AndroidRuntime(553): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
12-15 19:59:19.231: E/AndroidRuntime(553): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
12-15 19:59:19.231: E/AndroidRuntime(553): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-15 19:59:19.231: E/AndroidRuntime(553): at android.os.Looper.loop(Looper.java:137) 
12-15 19:59:19.231: E/AndroidRuntime(553): at android.app.ActivityThread.main(ActivityThread.java:4340) 
12-15 19:59:19.231: E/AndroidRuntime(553): at java.lang.reflect.Method.invokeNative(Native Method) 
12-15 19:59:19.231: E/AndroidRuntime(553): at java.lang.reflect.Method.invoke(Method.java:511) 
12-15 19:59:19.231: E/AndroidRuntime(553): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
12-15 19:59:19.231: E/AndroidRuntime(553): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
12-15 19:59:19.231: E/AndroidRuntime(553): at dalvik.system.NativeStart.main(Native Method) 
12-15 19:59:19.231: E/AndroidRuntime(553): Caused by: java.lang.ClassNotFoundException: com.one.slate.Calc 
12-15 19:59:19.231: E/AndroidRuntime(553): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
12-15 19:59:19.231: E/AndroidRuntime(553): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
12-15 19:59:19.231: E/AndroidRuntime(553): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
12-15 19:59:19.231: E/AndroidRuntime(553): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
12-15 19:59:19.231: E/AndroidRuntime(553): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1870) 
12-15 19:59:19.231: E/AndroidRuntime(553): ... 11 more 

Android清單:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.haildark.calculator" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="19" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.haildark.calculator.Home" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.one.slate.Calc" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="com.one.slate.CALC" /> 

       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
+3

什麼不行?有錯誤嗎?如果是這樣,請發佈logcat。 – Szymon

+2

如果你發佈了你正在得到的錯誤,這將是非常有幫助的。 –

+0

它正在編譯? – nhgrif

回答

0

清單文件聲明具有的完全限定名活動com.one.slate.Calc,但在代碼中,類Calc位於包com.haildark.calculator中,因此完全限定名稱爲com.haildark.calculator.Calc。嘗試啓動活動時,Android無法找到您的活動類。

要解決此問題,請更改清單類名稱以匹配您的代碼。

相關問題