2014-10-09 7 views
0

Im пытается создать приложение для Android. И после некоторых тестов на моем собственном устройстве я хорошо подумал о своем телефоне, и эмулятор работает очень хорошо.Android-приложение сбой после нажатия кнопки

но теперь начинается странное вещество! Я сделал отладочную APK для отправки моему другу, чтобы он мог установить его и протестировать. Но при этой конкретной кнопке нажмите приложение сбой. Мы подумали, может быть, это телефон и провели еще один тест с двумя другими телефонами (все разные модели или бренды). И то же самое происходит.

Мы решили попробовать установить приложение на телефоне друзей с Android Studio (так же, как и мой первоначальный тест), и на этом этапе префект приложения работает на своем мобильном телефоне.

Итак, я сделал еще один 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 я не имею журнал (если кто-то имеет представление о том, чтобы создать один я бы также помочь)

EDIT: код ошибки от Google Play Dev:

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

ответ

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 (View зрения) {

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

      default: 
       break; 
      } 

}

+0

Это не сработало. Ничего не изменилось – Twizzler

+1

Хорошо, давайте попробуем это –

+0

Не работает, но у меня уже есть трассировка стека! см. править – Twizzler