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