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

如何用logcat查找空指针异常

闻人昕
2023-03-14
    private static final String TAG = "MainActivity_ErrorLog";

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

// Create the getData intent
    Intent intentgetData = new Intent(MainActivity.this, SendData.class); 

    public void onStart()
    {
        {       
        try 
        {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

            if (sd.canWrite()) 
            {
        // verify the paths
                String currentDBPath = "TLC_COMMON/database.db";
                String backupDBPath = "database.db"; 
                File currentDB = new File(data, currentDBPath);
                File backupDB = new File(sd, backupDBPath);

                if (currentDB.exists()) 
                {
                    FileChannel src = new FileInputStream(currentDB).getChannel();
                    FileChannel dst = new FileOutputStream(backupDB).getChannel();
                    dst.transferFrom(src, 0, src.size());
                    src.close();
                    dst.close();                    
                }
            }
        }

        catch (Exception e)     
        {   
            // change the V below to E when complete
            Log.v(TAG,"ERROR: Database file not created"); 
        }
        startActivity(intentgetData);
        }

    }

  } 
/* Checks if external storage is available to read */   
public boolean isExternalStorageReadable() 
    {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state) ||
        Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) 
        {
        return true;
        }
        return false;
    }

/** Called when the user clicks the Send My Data button */
public SendData(View view) 
    {

    // Send data by email
        {
            File root = Environment.getExternalStorageDirectory(); 
    // verify it is saving as this file name; also path in previous class
            String fileName = "database.db"; 
            if (root.canWrite()) 
                { 
                File attachment = new File(root, fileName); 
                Intent email = new Intent(Intent.ACTION_SENDTO);                
                email.putExtra(android.content.Intent.EXTRA_SUBJECT, "Exercise data");
                email.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"test@gmail.com"});
                // is the Uri necessary?
                email.putExtra(android.content.Intent.EXTRA_TEXT, Uri.fromFile(attachment));
                // look at this VVV
                startActivity(Intent.createChooser(email, "Send the data via Email"));} 
            else 
                {
                // Change the V below to E when complete
                Log.v(TAG, "Email send failed");
                }
            }
        }
public void finish() 
{   
}

}
11-13 13:29:37.343: W/dalvikvm(3319): threadid=1: thread exiting with uncaught exception (group=0x418e3300)
11-13 13:29:37.343: E/AndroidRuntime(3319): FATAL EXCEPTION: main
11-13 13:29:37.343: E/AndroidRuntime(3319): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.va.datasender/com.example.va.datasender.MainActivity}: java.lang.NullPointerException
11-13 13:29:37.343: E/AndroidRuntime(3319):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at android.os.Looper.loop(Looper.java:137)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at android.app.ActivityThread.main(ActivityThread.java:4745)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at java.lang.reflect.Method.invokeNative(Native Method)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at java.lang.reflect.Method.invoke(Method.java:511)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at dalvik.system.NativeStart.main(Native Method)
11-13 13:29:37.343: E/AndroidRuntime(3319): Caused by: java.lang.NullPointerException
11-13 13:29:37.343: E/AndroidRuntime(3319):     at android.content.ContextWrapper.getPackageName(ContextWrapper.java:127)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at android.content.ComponentName.<init>(ComponentName.java:75)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at android.content.Intent.<init>(Intent.java:3301)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at com.example.va.datasender.MainActivity.<init>(MainActivity.java:36)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at java.lang.Class.newInstanceImpl(Native Method)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at java.lang.Class.newInstance(Class.java:1319)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
11-13 13:29:37.343: E/AndroidRuntime(3319):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
11-13 13:29:37.343: E/AndroidRuntime(3319):     ... 11 more

共有1个答案

夏晋
2023-03-14

找到最低的“原因”并继续向下,直到代码中的一行:

Caused by: java.lang.NullPointerException
     at android.content.ContextWrapper.getPackageName(ContextWrapper.java:127)
     at android.content.ComponentName.<init>(ComponentName.java:75)
     at android.content.Intent.<init>(Intent.java:3301)
     at com.example.va.datasender.MainActivity.<init>(MainActivity.java:36)

意味着在活动具有有效上下文之前,您正在作为类变量或在构造函数中执行某些操作。但具体问题在36号线。

我想您是想用this创建一个意图。而是在oncreate()中初始化您的意图。

// Create the getData intent
Intent intentgetData = new Intent(MainActivity.this, SendData.class); 
Intent intentgetData;
intentgetData = new Intent(MainActivity.this, SendData.class);
 类似资料:
  • 我正试着数字符串中元音的数目。问题是它编译正确,但当我运行它时,命令窗口显示“countvowels.main(countvowels.java:25)处线程'main'java.lang.NullPointerException”。 是什么导致了这一点,我该如何修复它,我该如何防止它在未来再次发生? 第25行是我的if语句:

  • 问题内容: 有可能这可能是一个双重问题。我将String变量初始化为null。我可能会或可能不会使用一个值更新它。现在我想检查此变量是否不等于null以及我尝试执行的操作是否会得到null指针异常。空指针异常,因为它代价高昂。是否有任何有效的解决方法.TIA 问题答案: 如果您使用 你 不会 得到。 我怀疑你在做什么: 这是因为null 而引发,而不是因为null。 如果仍然无法解释,请发布您用于

  • 我已经更新了我的项目中的一些依赖关系之后,我的Hibernate配置类显示Nullpointerx的。 我将SpringDataJPA存储库与hibernate一起使用,已经超过24小时了,仍然没有找到任何关于小问题的适当解决方案。 我已经尝试过的一些解决方案:- 使用@bean(name=“entityManagerFactory”)提供bean名称 我面临的问题 波姆。xml文件 配置类 db

  • 当我试图从DB查询结果时,我得到一个空指针异常。以下是错误: 这是错误产生的函数。 如果我启动应用程序信息服务(=new ApplicationInfoService()),我会得到一个指向我的服务类的空指针错误,在这里进行查询 错误转到createQuery行,如果我打印出EntityManager,它将返回“null”。为什么我的Entitymanager不能初始化。我在我的登录系统中使用了几

  • 当我们尝试用Null值获取数据时 IN子句获得空指针异常。 也许是因为这个。 在数据库中,我们可以提供null in IN子句。 jooq中存在一个“无法修复”的问题https://github.com/jOOQ/jOOQ/issues/3867 有一些替代方案: 在输入前检查null(在我的情况下,这是一个非常大的select语句) 所以如果我想让这成为可能,还有其他的解决方法吗。 注:类似的情

  • 问题内容: 有一些模式可用于检查方法的参数是否已赋值。 首先,经典的。在自制代码中很常见,并且很容易理解。 其次,您可以使用现有框架。该代码看起来更好一些,因为它仅占用一行。缺点是它可能调用另一个方法,这 可能 会使代码的运行速度慢一些,具体取决于编译器。 第三,您可以尝试调用对对象没有副作用的方法。乍一看可能很奇怪,但它的令牌少于上述版本。 我还没有看到广泛使用的第三种模式,感觉就像我自己发明了