旋转器崩溃应用程序

时间:2017-09-02 00:05:48

标签: android

问题

我的应用程序中有两个旋转器,它们应该更改文本视图,然后我按一个按钮来计算结果并在屏幕上显示。目前,微调器正确显示,但按下按钮时,应用程序崩溃

以前我有2个编辑文本,用户可以输入他们的数字,但一切都运行得很好,但现在它与微调器崩溃,但我确实需要在应用程序中使用微调器以方便使用,所以我必须弄清楚这一点。我的微调器有120个项目,所以我只需发布一小段代码。任何帮助赞赏!我现在一直在努力解决这个问题。

微调代码

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String spin = spinner.getSelectedItem().toString();
            switch (spin) {
                case "1":

                    numspace1.setText("0");

                    break;
                case "2":

                    numspace1.setText("83");

                    break;
                case "3":

                    numspace1.setText("174");

                    break;
                case "4":

                    numspace1.setText("276");

                    break;
                case "5":

                    numspace1.setText("388");

按钮代码

normal.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            InputMethodManager inputManager = (InputMethodManager)
                    getSystemService(Context.INPUT_METHOD_SERVICE);

            inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
                    InputMethodManager.HIDE_NOT_ALWAYS);
            Double num1 = Double.parseDouble(numspace1.getText().toString());
            Double num2 = Double.parseDouble(numspace2.getText().toString());
            Double vari1 = Double.parseDouble(var1.getText().toString());
            Double vari2 = Double.parseDouble(var2.getText().toString());
            Double vari3 = Double.parseDouble(var3.getText().toString());
            Double vari4 = Double.parseDouble(var4.getText().toString());
            Double vari5 = Double.parseDouble(var5.getText().toString());
            Double vari6 = Double.parseDouble(var6.getText().toString());
            Double vari7 = Double.parseDouble(var7.getText().toString());
            Double vari8 = Double.parseDouble(var8.getText().toString());
            Double vari9 = Double.parseDouble(var9.getText().toString());
            Double vari10 = Double.parseDouble(var10.getText().toString());
            Double vari11 = Double.parseDouble(var11.getText().toString());
            Double vari12 = Double.parseDouble(var12.getText().toString());
            Double vari13 = Double.parseDouble(var13.getText().toString());
            Double vari14 = Double.parseDouble(var14.getText().toString());
            Double vari15 = Double.parseDouble(var15.getText().toString());
            //do the calculation
            Double a1 = (num2 - num1) / vari1;
            Double a2 = (num2 - num1) / vari2;
            Double a3 = (num2 - num1) / vari3;
            Double a4 = (num2 - num1) / vari4;
            Double a5 = (num2 - num1) / vari5;
            Double a6 = (num2 - num1) / vari6;
            Double a7 = (num2 - num1) / vari7;
            Double a8 = (num2 - num1) / vari8;
            Double a9 = (num2 - num1) / vari9;
            Double a10 = (num2 - num1) / vari10;
            Double a11 = (num2 - num1) / vari11;
            Double a12 = (num2 - num1) / vari12;
            Double a13 = (num2 - num1) / vari13;
            Double a14 = (num2 - num1) / vari14;
            Double a15 = (num2 - num1) / vari15;
            //set the value to the textview, to display on screen.
            l1.setText(String.format("%.0f", a1));
            l2.setText(String.format("%.0f", a2));
            l3.setText(String.format("%.0f", a3));
            l4.setText(String.format("%.0f", a4));
            l5.setText(String.format("%.0f", a5));
            l6.setText(String.format("%.0f", a6));
            l7.setText(String.format("%.0f", a7));
            l8.setText(String.format("%.0f", a8));
            l9.setText(String.format("%.0f", a9));
            l10.setText(String.format("%.0f", a10));
            l11.setText(String.format("%.0f", a11));
            l12.setText(String.format("%.0f", a12));
            l13.setText(String.format("%.0f", a13));
            l14.setText(String.format("%.0f", a14));
            l15.setText(String.format("%.0f", a15));
        }
    });

崩溃日志

09-02 10:46:48.444 5337-5337/com.elyrs.pocketcalcs E/AndroidRuntime: FATAL EXCEPTION: main
                                                                     Process: com.elyrs.pocketcalcs, PID: 5337
                                                                     java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.IBinder android.view.View.getWindowToken()' on a null object reference
                                                                         at com.elyrs.pocketcalcs.AgilCalc$4.onClick(AgilCalc.java:1373)
                                                                         at android.view.View.performClick(View.java:5637)
                                                                         at android.view.View$PerformClick.run(View.java:22429)
                                                                         at android.os.Handler.handleCallback(Handler.java:751)
                                                                         at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                         at android.os.Looper.loop(Looper.java:154)
                                                                         at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
09-02 10:46:48.450 1750-3633/system_process W/ActivityManager:   Force finishing activity com.elyrs.pocketcalcs/.AgilCalc
09-02 10:46:48.650 1750-4649/system_process I/OpenGLRenderer: Initialized EGL, version 1.4
09-02 10:46:48.650 1750-4649/system_process D/OpenGLRenderer: Swap behavior 1
09-02 10:46:48.651 1750-4649/system_process W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
09-02 10:46:48.651 1750-4649/system_process D/OpenGLRenderer: Swap behavior 0
09-02 10:46:48.656 1279-1282/? D/gralloc_ranchu: gralloc_alloc: format 1 and usage 0x900 imply creation of host color buffer
09-02 10:46:48.696 1279-1282/? D/gralloc_ranchu: gralloc_alloc: format 1 and usage 0x900 imply creation of host color buffer
09-02 10:46:48.706 1279-1282/? D/gralloc_ranchu: gralloc_alloc: format 1 and usage 0x900 imply creation of host color buffer
09-02 10:46:49.018 1750-1796/system_process W/ActivityManager: Activity pause timeout for ActivityRecord{f371862 u0 com.elyrs.pocketcalcs/.AgilCalc t5 f}
09-02 10:46:49.104 5337-5344/com.elyrs.pocketcalcs W/art: Suspending all threads took: 70.046ms
09-02 10:46:49.319 1750-1760/system_process I/art: Background partial concurrent mark sweep GC freed 29056(1626KB) AllocSpace objects, 10(200KB) LOS objects, 25% free, 11MB/15MB, paused 9.897ms total 856.623ms
09-02 10:46:54.052 5337-5344/com.elyrs.pocketcalcs W/art: Suspending all threads took: 35.882ms
09-02 10:46:54.757 3455-6219/com.google.android.gms W/PlatformStatsUtil: Could not retrieve Usage & Diagnostics setting. Giving up.
09-02 10:46:58.518 1750-1796/system_process W/ActivityManager: Launch timeout has expired, giving up wake lock!

0 个答案:

没有答案