2014-10-03 61 views
-4

我創建了一個計算器,我做了一個刪除按鈕,但是當我運行該應用程序時,它崩潰並停止。 這是我的java代碼:在計算器中刪除按鈕

請幫助我。

 private static String removeLastChar(String str) { 
     return str.substring(0,str.length()-1); 

 bdelete.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      editText.setText(removeLastChar(editText.getText().toString())); 
     } 
     }); 

這裏是我的日誌

java.lang.RuntimeException: Unable to start activity ComponentInfo{player.android.com.layout/player.android.com.layout.MyActivity}: java.lang.NullPointerException 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
     at android.app.ActivityThread.access$600(ActivityThread.java:141) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5103) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:525) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
     at player.android.com.layout.MyActivity.onCreate(MyActivity.java:68) 
     at android.app.Activity.performCreate(Activity.java:5133) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
     at android.app.ActivityThread.access$600(ActivityThread.java:141) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5103) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:525) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
     at dalvik.system.NativeStart.main(Native Method) 
+2

https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this – CommonsWare 2014-10-03 11:00:04

+0

你的Logcat在哪裏? – 2014-10-03 11:03:13

+0

顯示你的MyActivity.java:68?這裏 – prakash 2014-10-03 11:12:07

回答

0

有了這個代碼,您將刪除所有的字符,因爲你說從0刪除對長度爲1的字符。

str.substring(0,str.length()-1); 

例如:

字符串LL = 「Lorem存有簡直是」

如果你說String ii = ll.substring(0,2);

你會得到:ii == "Lor"

嘗試這樣:

public String remove(){ 
     String character = "2313213"; 
     String character1 = ""; 
     for(int i=0;i<character.length()-1;i++){ 
      character1 += character.charAt(i); 
     } 

     return character1; 
    } 
+0

我只想刪除1個字符 我已經做了一個清除按鈕,現在只想刪除按鈕刪除1最後一個字符只有 – 2014-10-03 11:25:24

+0

與此代碼,您將刪除拉斯一個字符。 – MilanNz 2014-10-03 11:27:01

+0

好的把這個代碼放在哪裏? str.substring(0,str.length() - 1); 或只需要把這個 public String remove(){ String character =「2313213」; String character1 =「」; (int i = 0; i 2014-10-03 11:31:22

0
This is late but help someone..... 

delete.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     String s=editText.getText().toString(); 
     s=s.substring(0,s.lenght()-1) 
     editText.setText(s); 
    } 
    }); 

this helps for deleting last digit from editText. 
i also refer this from 
http://stackoverflow.com/questions/21893558/what-is-the-best-way-to-delete-the-last-digit-in-a-calculator-app