当前位置: 首页 > 知识库问答 >
问题:

如何解决错误:不幸的是,已经停止

莘聪
2023-03-14

我对Android编程完全陌生。我正在制作的第一个应用程序遇到了一些问题。每次我运行应用程序时,我的手机(我正在使用它来测试和调试我的应用程序)上会弹出一条消息说“不幸的是,MyNewApp3已停止”。这个错误甚至无法打开我的应用程序。我如何解决这个问题?

这是我的代码:

package newapp.com.bipl.mynewapp3;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

public class Page2 extends AppCompatActivity {

RadioGroup Rg;
RadioButton B;
RadioButton O;
RadioButton H;
EditText Dec;
TextView Ans;
int Num;
String Result;
int b;
int c;
char z;
String s;
String d;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_page2);

    Toast.makeText(getBaseContext(),"Successful Login",Toast.LENGTH_LONG).show();

    Rg = (RadioGroup) findViewById(R.id.RGroup);
    B = (RadioButton) findViewById(R.id.Binary_rb);
    O = (RadioButton) findViewById(R.id.Octal_rb);
    H = (RadioButton) findViewById(R.id.Hexa_rb);
    Dec = (EditText) findViewById(R.id.NumEntry_txt);
    Ans = (TextView) findViewById(R.id.Answer_lbl);
    Num = Integer.parseInt(Dec.getText().toString());
    //Num = 161;
    if(B.isSelected())
        Binary(Num);
    if(O.isSelected())
        Octal(Num);
    if (H.isSelected())
        Hexal(Num);

}

/* public void Conversion(){
    if(B.isSelected())
        Binary(Num);
    if(O.isSelected())
        Octal(Num);
    if (H.isSelected())
        Hexal(Num);
}*/

public void Binary(int a){

    while(b > 0){
        c = a % 2;
        b = a/2;
        d = "" + c;
        s = d.concat(s);
        a = b;
    }
    Result = s;
    Toast.makeText(getBaseContext(), "" + Result, Toast.LENGTH_SHORT).show();
    Ans.setText("" + Result);

}

public void Octal(int a){

    while(b > 0){
        c = a % 8;
        b = a/8;
        d = "" + c;
        s = d.concat(s);
        a = b;
    }
    Result = s;
    Toast.makeText(getBaseContext(), "" + Result, Toast.LENGTH_SHORT).show();
    Ans.setText("" + Result);

}

public void Hexal(int a){

    while(b > 0){
        c = a % 16;
        b = a/16;

        if(c>9){
            switch (c){
                case 10 : z = 'A';
                          break;
                case 11 : z = 'B';
                          break;
                case 12 : z = 'C';
                          break;
                case 13 : z = 'D';
                          break;
                case 14 : z = 'E';
                          break;
                case 15 : z = 'F';
                          break;
            }

            d = "" + z;

        }
        else
            d = "" + c;

        s = d.concat(s);
        a = b;
    }

    Result = s;
    Toast.makeText(getBaseContext(), "" + Result, Toast.LENGTH_SHORT).show();
    Ans.setText("" + Result);


  }
}

我的LogCat输出(这是我在看到别人建议别人放置LogCat输出后发布的;我不知道它是用来做什么的):

01-12 11:45:52.559 15441-15441/newapp。通用域名格式。bipl。mynewapp3 V/text视图:stopSelectionActionMode()01-12 11:45:52.572 15441-15441/newapp。通用域名格式。bipl。mynewapp3 D/AndroidRuntime:关闭VM 01-12 11:45:52.573 15441-15441/newapp。通用域名格式。bipl。mynewapp3 E/AndroidRuntime:致命异常:主进程:newapp。通用域名格式。bipl。mynewapp3,PID:15441 java。lang.RuntimeException:无法启动活动组件信息{newapp.com.bipl.mynewapp3/newapp.com.bipl.mynewapp3.Page2}:java。lang.NumberFormatException:android上的无效int:“”。应用程序。活动线程。android上的performLaunchActivity(ActivityThread.java:2521)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:2595)。应用程序。活动线程。在Android上获得800美元(ActivityThread.java:178)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1470)。操作系统。处理程序。android上的dispatchMessage(Handler.java:111)。操作系统。活套。android上的loop(Looper.java:194)。应用程序。活动线程。java上的main(ActivityThread.java:5631)。郎。反思。方法在java中调用(本机方法)。郎。反思。方法在com上调用(Method.java:372)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(ZygoteInit.java:959)。Android内部的操作系统。合子岩。主要(ZygoteInit.java:754)原因:java。lang.NumberFormatException:java中的int“”无效。lang.Integer。java中的invalidInt(Integer.java:138)。lang.Integer。java上的parseInt(Integer.java:358)。lang.Integer。newapp上的parseInt(Integer.java:334)。通用域名格式。bipl。mynewapp3.Page2。android上的onCreate(第2页,java:41)。应用程序。活动在android上执行创建(Activity.java:6092)。应用程序。仪表。android上的callActivityOnCreate(Instrumentation.java:1112)。应用程序。活动线程。android上的performLaunchActivity(ActivityThread.java:2468)。应用程序。活动线程。handleLaunchActivity(ActivityThread.java:2595)

共有3个答案

拓拔嘉运
2023-03-14

您可以添加try-cat将String转换为int。如果它得到无法转换的空字符串之类的东西,则不会崩溃。

try
{
    if(str != null){
      Num = Integer.parseInt(Dec.getText().toString());
    }
    else{
      Num = 0;
    }
}
catch (NumberFormatException e)
{
    Num = 0;
}

此实现将停止任何错误的输入转换崩溃。

郎欣然
2023-03-14

声明并为您的“Num”变量赋值为零,如下所示

int Num = 0;

然后首先以字符串格式获取EditText值,然后对其进行解析

String mynum = Dec.getText().toString();
Num = Integer.parseInt(mynum);

在这里您可以检查您的myNum是否为空。

越嘉茂
2023-03-14

每次显示或使用任何变量进行转换时都必须检查null,问题是您没有将字符串检查为null,而在您的情况下它是null。所以执行

if(Dec != null){
    if(Dec.getText() != null){
        Num = Integer.parseInt(Dec.getText().toString());
    }
}

它应该工作正常!

 类似资料:
  • 我在Android Studio 6.0上的模拟器出现了上述崩溃,但在我的设备6.0.1上没有崩溃。模拟器有时会启动相机,但它大多会崩溃,在logcat中没有任何东西来给我指明正确的方向。有人知道这里可能发生了什么吗? 此外,这里有一个图像,当它确实通过。image_capture_camera logcat:

  • 代码 和logcat 06-03 16:59:26.570 972 0-9757/com.example.abhijitroy.superhero E/AndroidRuntime:致命异常:AsyncTask#1进程:com.example.abhijitroy.superhero,PID:9720 java.lang.RuntimeException:在Android.os.AsyncTask

  • 如有任何帮助,不胜感激。

  • 这个想法是在警报开始时启动一个游戏。我在下面展示了manifest.xml。如果我犯了错误,请纠正我。因为我刚接触Android系统,所以我无法理解它。PS:我已经搜索了其他类似的问题,并纠正了许多其他错误,但问题仍然存在。 这是我从教程(AndroidTimeActivity)中获得的警报代码: 这是AlarmReceiver类:

  • 这个想法是在警报开始时启动一个游戏。我已经在下面展示了manifest.xml。如果我犯了错误,请纠正我。因为我是Android的新手,所以我不太懂。PS:我已经搜索了其他类似的问题,并更正了很多其他错误,但问题依然存在。 这是我从一个教程(AndroidTimeActivity)得到的警报代码: 这是AlarmReceiver类: 这里是Manager类,当警报接收器接收到意图时,我要调用它:

  • 我正在通过proj.android-studio编译一个新项目,使用: