尝试打开活动时出现 LogCat 致命错误

Posted

技术标签:

【中文标题】尝试打开活动时出现 LogCat 致命错误【英文标题】:LogCat FATAL ERROR when trying to open a activity 【发布时间】:2012-10-08 18:28:59 【问题描述】:

当我尝试在我的应用程序中打开一个活动时,它应该显示一些已保存的消息(我保存在同一应用程序的另一个活动中),它强制关闭并在 LogCat 中向我显示这些错误:

  10-08 18:22:17.243: E/androidRuntime(269): FATAL EXCEPTION: main
  10-08 18:22:17.243: E/AndroidRuntime(269): java.lang.RuntimeException: Unable to start activity ComponentInfocom.example.mensagem/com.example.mensagem.Mensagenssalvas: java.lang.NullPointerException
  10-08 18:22:17.243: E/AndroidRuntime(269):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at android.app.ActivityThread.access$2300(ActivityThread.java:125)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at android.os.Handler.dispatchMessage(Handler.java:99)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at android.os.Looper.loop(Looper.java:123)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at android.app.ActivityThread.main(ActivityThread.java:4627)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at java.lang.reflect.Method.invokeNative(Native Method)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at java.lang.reflect.Method.invoke(Method.java:521)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at dalvik.system.NativeStart.main(Native Method)
  10-08 18:22:17.243: E/AndroidRuntime(269): Caused by: java.lang.NullPointerException
  10-08 18:22:17.243: E/AndroidRuntime(269):    at com.example.mensagem.Mensagenssalvas.Mensagens(Mensagenssalvas.java:41)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at com.example.mensagem.Mensagenssalvas.onCreate(Mensagenssalvas.java:26)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
  10-08 18:22:17.243: E/AndroidRuntime(269):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
  10-08 18:22:17.243: E/AndroidRuntime(269):    ... 11 more

在我使用LINK 中的代码之前这是正常的,但在我使用代码之后,我的数据库column 现在没有在我尝试打开的活动中打开。(这是为了显示消息)。

Mensagensalvas.java

 public class Mensagenssalvas extends Activity 

    public SQLiteDatabase db;

    ArrayList<String> list = null;

@Override
protected void onCreate(Bundle savedInstanceState) 
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mensagenssalvas);
    db = openOrCreateDatabase("banco.db", Context.MODE_WORLD_WRITEABLE, null);

    Mensagens();


private void Mensagens() 
    // TODO Auto-generated method stub

    ListView user = (ListView) findViewById(R.id.lvMensagens);

    String[] campos = new String[] "mensagemsalva", "mensagemenviada";

    list = new ArrayList<String>();
    Cursor c = db.query( "mensagens", campos, null, null, null, null, null);
    c.moveToFirst();
    if(c.getCount() > 0) 
        while(true) 
           list.add(c.getString(c.getColumnIndex("mensagemsalva")).toString());
            if(!c.moveToNext()) break;
        
    

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, list);

    user.setAdapter(adapter);

   

【问题讨论】:

这是一个 NullPointerException。需要查看其背后的实际代码才能了解更多信息。 好吧,但我没有更改活动中的代码,我只是将列设置为 NULL 我猜,检查链接以了解我对保存/显示消息的列做了什么问题。 Mensagenssalvas.java 第 41 行的代码是什么? at com.example.mensagem.Mensagenssalvas.Mensagens(Mensagenssalvas.java:41) - 在 Mensagenssalvas 文件中找到 41 行。那里有些东西是空的。 哦,所以检查问题中的 LINK,我将列设置为 NULL(试图清除其中的所有值,但我猜出了点问题),所以现在的问题是,如何解决? 【参考方案1】:

您需要检查 Mensagenssalvas.java 的第 41 行 并找出导致 NullPointerException 的原因。

在许多情况下,您只是忘记初始化它。

修复: 不要将您想要使用的内容设置为 NULL, 相反,将其设置为 0 或“”,具体取决于它的类型。 您需要设置为具有“EMPTY”或“ZERO”值但不为 NULL 的值。

【讨论】:

读取 cmets。它显示了为什么它显示 Null。所以现在我的问题是如何解决它。 谢谢,我通过一个按钮将Column设置为"",所以现在它可以正常工作了,谢谢你的帮助。但是现在当我尝试保存消息(在另一个活动中)没有显示在活动中时,我将列设置为""

以上是关于尝试打开活动时出现 LogCat 致命错误的主要内容,如果未能解决你的问题,请参考以下文章

一些 logcat 错误 - 致命异常

尝试使用 twilio Api phpSDK 发送消息时出现致命错误

启动logcat时出现意外错误。尝试重新选择设备。] EO

使用 CoreData 时出现 NSFetchedResultsController 致命错误(尝试获取)

使用 xampp 运行本地项目时出现致命错误

为啥在 Visual Studio 中编译 C++ 项目时出现致命错误“LNK1104:无法打开文件 'cryptlib.lib'?