2014-10-09 106 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