我正在开发一个应用程序,每次运行它时,我都会收到这样的消息:

不幸的是,MyApp已停止。

我可以做什么来解决这个问题?


关于这个问题-显然是受什么是堆栈跟踪以及如何使用它调试应用程序错误的启发?,有很多问题表明他们的应用程序已经崩溃,没有任何进一步的细节。这个问题旨在指导Android新手程序员如何自己解决问题,或者提出正确的问题。


当前回答

如果您的终端中没有任何有趣的日志(或者它们与您的应用程序没有直接关联),那么您的问题可能是由于本地库。在这种情况下,您应该检查终端中的“墓碑”文件。

逻辑删除文件的默认位置取决于每个设备,但如果是这样的话,则会有一个日志告诉您:逻辑删除已写入:/data/botobs/逻辑删除_06

有关详细信息,请查看https://source.android.com/devices/tech/debug.

其他回答

此答案描述了检索堆栈跟踪的过程。已经有堆栈跟踪了吗?阅读“什么是堆栈跟踪,如何使用它调试应用程序错误?”中的堆栈跟踪

问题

应用程序退出,因为引发了未捕获的RuntimeException。其中最常见的是NullPointerException。

如何解决?

每当Android应用程序(或任何Java应用程序)崩溃时,堆栈跟踪都会写入控制台(在本例中为logcat)。此堆栈跟踪包含解决问题的重要信息。

Android工作室

在窗口的底部栏中,单击Logcat按钮。或者,您可以按alt+6。确保在“设备”面板中选择了仿真器或设备。接下来,尝试查找以红色显示的堆栈跟踪。可能有很多内容登录到logcat中,因此您可能需要滚动一点。找到堆栈跟踪的一个简单方法是清除logcat(使用右侧的回收站),然后让应用程序再次崩溃。

我找到了堆栈跟踪,现在呢?

耶!你的问题已经解决了一半。您只需要通过分析堆栈跟踪来找出应用程序崩溃的原因。

阅读“什么是堆栈跟踪,如何使用它调试应用程序错误?”中的堆栈跟踪

我仍然无法解决我的问题!

如果您找到了异常及其发生的行,但仍然无法确定如何修复它,请不要犹豫,在StackOverflow上提问。

尽量简洁:发布堆栈跟踪和相关代码(例如,在引发异常的行之前的几行)。

首先,你检查你的应用程序在哪个点崩溃了(不幸的是,MyApp已经停止。)。为此,你可以使用Log.e(“TAG”,“Message”);,使用这一行,您可以在logcat中查看应用程序日志。

之后,你会发现你的应用程序停止了哪一点,这很容易在你身边解决。

在下面的showToast()方法中,您必须为上下文或应用程序上下文传递另一个参数,这样您就可以尝试。

  public void showToast(String error, Context applicationContext){
        LayoutInflater inflater = getLayoutInflater();
        View view = inflater.inflate(R.layout.custom_toast, (ViewGroup)      
        findViewById(R.id.toast_root));
        TextView text = (TextView) findViewById(R.id.toast_error);
        text.setText(error);
        Toast toast = new Toast(applicationContext);
        toast.setGravity(Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);
        toast.setDuration(Toast.LENGTH_SHORT);
        toast.setView(view);
        toast.show();
}

首先,您需要检查应用程序崩溃的位置和原因(不幸的是,MyApp已停止)。借助LOG,您可以找出问题所在。

之后,你会发现你的应用程序停止了从你的角度修复它。

人们会犯错,编码也是如此。

当发生任何错误时,总是用红色文本检查日志,但是你可以在蓝色文本中找到真正的问题,红色文本中有下划线。

确保如果您创建了一个新活动,请始终在AndroidManifest文件中声明该活动。

如果添加Permission,请在AndroidMainifest文件中声明它。