Android应用程序在单击按钮后崩溃

Android应用程序在单击按钮后崩溃,android,debugging,crash,Android,Debugging,Crash,我正在尝试为android制作一个应用程序。在我自己的设备上做了一些测试之后,我觉得我的手机和仿真器的效果都不错 但是现在奇怪的事情开始了!我制作了一个调试APK发送给我的一个朋友,这样他就可以安装并测试它。但在这个特定的按钮点击应用程序崩溃。我们认为这可能是手机,并用另外两款手机(所有不同型号或品牌)进行了另一项测试。同样的事情也发生了 我们想让我们试着用Android Studio在我朋友的手机上安装这个应用程序(和我最初的测试一样),然后这个应用程序在他的手机上运行 所以我做了另一个APK

我正在尝试为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);
    }

};
工资信息“

public HashMap getWageInfo(){
HashMap wageMap=新的HashMap();
SQLiteDatabase=this.getWritableDatabase();
String selectQuery=“选择*来自工资”;
Cursor=database.rawQuery(selectQuery,null);
if(cursor.moveToFirst()){
做{
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());
}
返回下注图;
}

为每个按钮调用相同的函数

<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" />

}

@user3930864 amountPayed=Double.parseDouble(stringWageHour);请检查您的stringWageHour,它肯定有两对字符串,这些字符串的位置为0,值为12,类似于that@AbhishekChaubey添加了getWageInfo
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;
}
<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" />
            switch (view.getId()) {
            case R.id.stopbutton:
                //dosomething
                break;

            default:
                break;
            }