不幸的是,MyApp已停止,我如何解决这个问题?

uqdfh47h  于 2022-09-16  发布在  Java
关注(0)|答案(23)|浏览(326)

我正在开发一个应用程序,每次运行它,我都会得到这样的消息:
不幸的是,MyApp已停止。
我能做什么来解决这个问题?

sf6xfgos

sf6xfgos16#

您必须检查Stack trace

怎么做

在IDE上,检查windows窗体LOGCAT
如果看不到logcat窗口,请转到此路径并打开它

window->show view->others->Android->Logcat

如果您正在使用Google Api,请转到以下路径:

  • adb logcat>logcat.txt*
j7dteeu8

j7dteeu817#

您可以使用以下任何工具:
1.亚洲开发银行logcat
1.adb logcat>日志。txt(您可以使用编辑器打开和搜索错误。)
1.eclipse logcat(如果在eclipse中不可见,请转到Windows->显示视图->其他->Android->logcat)
1.Android调试监视器或Android设备监视器(键入命令监视器或通过UI打开)

1.安卓工作室
我建议使用安卓调试监视器,很好。因为当有太多日志时,eclipse会挂起,并且通过adb logcat过滤器和所有困难。

ikfrs5lh

ikfrs5lh18#

检查Logcat消息并查看Manifest文件。应该缺少一些东西,如定义Activity,User权限等。

cotxawn7

cotxawn719#

此弹出窗口仅在代码中出现致命异常时显示,该异常会停止应用程序的执行。它可能是任何例外NullPointerExceptionOutOfMemoryException等。
如果您仍在Android studio中开发应用程序,最好的检查方法是通过Logcat,这是读取堆栈跟踪并检查应用程序原因的快速方法。
如果您的应用程序已处于活动状态,则无法使用logcat。因此,您可以实现Crashlytics,为您提供发生的任何异常的错误报告。

prdp8dxp

prdp8dxp20#

***注:**此答案使用Android Studio 2.2.2
***注2:**我认为您的设备已成功连接

当你的应用程序崩溃时,你要做的第一件事是查看LogCat,在Android Studio的底部有一个工具栏,其中有一系列菜单:

点击“安卓显示器”(我在上图中加下划线的显示器)
现在,你会得到这样的结果:

现在将“Verbose”更改为“Error”,它将只显示记录的错误。现在不要担心所有这些错误(如果你有)。

好吧,现在,做你做过的让你的应用崩溃的事情。应用程序崩溃后,请转到logcat。例如,您应该找到一个包含大量at:x.x.x:和Caused by: TrumpIsPresidentException的新崩溃日志。转到日志目录中的Caused by:语句。

Caused By:旁边,应该有发生的异常。在我的例子中,它是一个RuntimeException,并且下面应该有一行包含蓝色链接,例如:

**如果该Caused by:**下的某一行没有蓝色文本,则请查找另一行有蓝色文本的Caused by:
点击蓝色链接。它会带您到问题发生的地方。在我的情况下,这是由于这一行:

throw new RuntimeException();

现在我知道为什么它会崩溃了。这是因为我自己在抛出异常这是一个明显的错误
但是,假设我有另一个错误:

java.lang.NullPointerException

我检查了我的logcat,点击了它给我的蓝色链接,它把我带到了这里:

mTextView.setText(myString);

所以,现在我想调试。根据this StackOverflow question,NullPointerException表示某些东西是null
所以,让我们找出什么是空。有两种可能性。mTextViewmyString为空。为了找到答案,在mTextView.setText(mString)行之前,我添加了以下两行:

Log.d("AppDebug","mTextView is null: " + String.valueOf(mTextView == null);
Log.d("AppDebug","myString is null: " + String.valueOf(myString== null);

现在,正如我们之前所做的(我们将Verose更改为Error),我们希望将“Error”更改为“Debug”。因为我们是通过调试登录的。以下是所有日志方法:

Log.
  d means Debug
  e means error
  w means warning
  v means verbose
  i means information
  wtf means "What a terrible failure". This is similar to Log.e

因此,由于我们使用了Log.d,我们正在检查调试。这就是为什么我们将其更改为调试。
请注意,Log.d有第一个参数,在本例中为“AppDebug”。单击logcat右上角的“无过滤器”下拉菜单。选择“编辑过滤器配置”,为过滤器命名,并在“日志标记”中输入“应用程序调试”。单击“确定”。现在,您应该在logcat中看到两行:

yourPackageNameAndApp: mTextView is null: true
yourPackageNameAndApp: myString is null: false

现在我们知道mTextView为空。
我观察我的代码,现在我注意到了一些东西。
我的private TextView mTextView在班上名列前茅。但是,我没有定义它。
基本上,我忘记在onCreate()中执行此操作:

mTextView = (TextView) findViewById(R.id.textview_id_in_xml);

这就是为什么mTextView为空,因为我忘了告诉我的应用程序它是什么。所以我添加了这一行,运行我的应用,现在应用程序不会崩溃。

wa7juj8i

wa7juj8i21#

只需检查log cat中的错误。
您可以从eclipse中获得log cat选项:
窗口->显示视图->其他->安卓->Logcat
日志cat包含错误。
换句话说,您也可以通过在调试模式下执行应用程序来检查错误。首先设置断点,然后执行以下操作:
右键单击项目->调试为->Android应用程序

g2ieeal7

g2ieeal722#

首先,检查应用程序崩溃的时间点(Unfortunately, MyApp has stopped.)。为此,您可以使用Log.e("TAG", "Message");,使用该行您可以在logcat中看到您的应用程序日志。
之后,你会发现你的应用程序停止了哪一点,这很容易在你身边解决。

yzckvree

yzckvree23#

您可以使用Google's ADB tool获取Logcat file来分析问题。

adb logcat > logcat.txt

打开logcat.txt文件并搜索应用程序名称。应该有关于失败原因、行号、类名等的信息。

相关问题