2014-10-09 108 views
0

我試着做的Android應用程序後崩潰。經過我自己的設備上的一些測試後,我認爲我的手機和模擬器的效果都很好。Android應用點擊一個按鈕

但現在的古怪的東西開始了!我做了一個調試APK發送給我的一個朋友,所以他可以安裝它並測試它。但在這個特定的按鈕點擊應用程序崩潰。我們認爲可能是它的手機,並與另外兩款手機(所有不同型號或品牌)進行了另一項測試。同樣的事情發生。

的,我們認爲可以嘗試在我的朋友的手機與Android工作室(同我的初步測試)安裝應用程序,並在這一點上他的手機應用workt知府。

所以我又APK,並測試了它在某些手機上,希望它會工作。但是,從調試/發佈APK安裝後,它仍然崩潰。

在這裏,我這是在點擊按鈕後觸發的代碼。

stopButton = (Button) findViewById(R.id.stopButton); 
    stopButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 

      if (stopButton.getText().equals("Next")) { 
       Intent startIntent = new Intent(Timer.this, MyActivity.class); 

       Timer.this.startActivity(startIntent); 
      } else if (stopButton.getText().equals("Show income")) { 


       // 
       HashMap<String, String> shitList = dbTool.getWageInfo(); 


       if (shitList.get("type").equals("0")) { 
        stringWageHour = shitList.get("hourWage"); 
        amountPayed = Double.parseDouble(stringWageHour); 
        setAmountPayed(amountPayed); 
       } else { 
        stringHours = shitList.get("hourMonth"); 
        stringMonthPay = shitList.get("wageMonth"); 
        doubleHours = Double.parseDouble(stringHours); 
        doubleMonthPay = Double.parseDouble(stringMonthPay); 
        calculateHours = doubleMonthPay/doubleHours; 
        setAmountPayed(calculateHours); 
       } 


       getText = textTimer.getText().toString(); 

       amountMinuts = Double.parseDouble(getText); 
       minutWage = amountMinuts/60; 
       FinalAmount = amountPayed * minutWage; 
       formatter = NumberFormat.getNumberInstance(); 
       formatter.setMinimumFractionDigits(2); 
       formatter.setMaximumFractionDigits(2); 
       output = formatter.format(FinalAmount); 

       finalAmountString = String.valueOf(output); 
       textTimer.setText(finalAmountString); 

       HashMap<String, String> queryValuesMap = new HashMap<String, String>(); 

       queryValuesMap.put("time", getText); 
       queryValuesMap.put("earned", finalAmountString); 

       dbTool.insertShit(queryValuesMap); 


       stopButton.setText("Next"); 
      } else { 
       timeSwap += timeInMillies; 
       myHandler.removeCallbacks(updateTimerMethod); 

       string = textTimer.getText().toString(); 
       tmp = string.split(":"); 
       amountSeconds = Double.parseDouble(tmp[1]); 

       amountMinuts = Double.parseDouble(tmp[0]); 


       minutsSec = amountSeconds/60; 
       formatter = NumberFormat.getNumberInstance(); 
       formatter.setMinimumFractionDigits(2); 
       formatter.setMaximumFractionDigits(2); 
       output = formatter.format(minutsSec); 

       minutsSecFinal = Double.parseDouble(output); 
       minuts = minutsSecFinal + amountMinuts; 

       Final = String.valueOf(minuts); 
       textTimer.setText(Final); 

       stopButton.setText("Show income"); 
      } 
     } 
    }); 

} 

private Runnable updateTimerMethod = new Runnable() { 

    public void run() { 
     timeInMillies = SystemClock.uptimeMillis() - startTime; 
     finalTime = timeSwap + timeInMillies; 

     seconds = (int) (finalTime/1000); 
     minutes = seconds/60; 
     seconds = seconds % 60; 

     textTimer.setText("" + minutes + ":" 
       + String.format("%02d", seconds)); 
     myHandler.postDelayed(this, 0); 
    } 

}; 

當文本是「停止」並且將使用else語句時,按鈕失敗。 因爲我無法重現問題時,通常debuggig我沒有一個記錄(如果有人有一個想法,以創建一個我也有幫助)

編輯: 從谷歌的錯誤代碼打開發:

java.lang.NumberFormatException: Invalid double: "0,12" 
at java.lang.StringToReal.invalidReal(StringToReal.java:63) 
at java.lang.StringToReal.parseDouble(StringToReal.java:269) 
at java.lang.Double.parseDouble(Double.java:295) 
at jmsbrk.crappapp.Timer$1.onClick(Timer.java:190) 
at android.view.View.performClick(View.java:4445) 
at android.view.View$PerformClick.run(View.java:18429) 
at android.os.Handler.handleCallback(Handler.java:733) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5088) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
at dalvik.system.NativeStart.main(Native Method) 

工資信息」

public HashMap<String,String> getWageInfo(){ 
    HashMap<String,String> wageMap = new HashMap<String,String>(); 

    SQLiteDatabase database = this.getWritableDatabase(); 
    String selectQuery = "SELECT * FROM wage "; 

    Cursor cursor = database.rawQuery(selectQuery,null); 

    if(cursor.moveToFirst()){ 
     do{ 


      wageMap.put("wageId",cursor.getString(0)); 
      wageMap.put("type",cursor.getString(1)); 
      wageMap.put("hourWage",cursor.getString(2)); 
      wageMap.put("wageMonth",cursor.getString(3)); 
      wageMap.put("hourMonth",cursor.getString(4)); 


     }while (cursor.moveToNext()); 

    } 
    return wageMap; 
} 
+0

@AbhishekChaubey添加getWageInfo – Twizzler 2014-10-11 10:47:51

回答

1

調用同一個函數上的每個按鈕

<Button 
     android:id="@+id/stopButton" 
     android:layout_width="50dp" 
     android:layout_height="47dp" 
     android:layout_alignBottom="@+id/mainlayout1" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@+id/mainlayout1" 
     android:layout_marginRight="10dp" 
     android:onClick="CallMe" 
     android:background="@drawable/btnround" 
     android:text="@string/go" 
     android:textColor="@android:color/white" /> 

調用函數做這樣的

公共無效ClickMe(查看視圖) {

  switch (view.getId()) { 
      case R.id.stopbutton: 
       //dosomething 
       break; 

      default: 
       break; 
      } 

}

+0

這沒有奏效。什麼都沒有改變 – Twizzler 2014-10-09 15:31:57

+1

好的,讓我試試這個 – 2014-10-09 15:32:57

+0

沒有工作,但我現在有一個堆棧跟蹤!請參閱編輯 – Twizzler 2014-10-10 17:45:53