Android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked

时间:2014-05-11 16:39:41

标签: android sqlite

我是android编程的初学者。我在执行一个方法时遇到此错误。 我有这个方法来监听音量变化事件。

public boolean onKeyDown(int keyCode, KeyEvent event) 
     {
        //db = new DatabaseHelper(this.getApplicationContext());    
        AutomatedFragment obj = new AutomatedFragment();
            if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP))
            {
                //@ override
                obj.sendSMSEmergency();
            }
            return true;
     }

现在我正在调用另一个方法从其他类发送SMSEMergency()...这是

public void sendSMSEmergency() {
        db = new ContactsManager(getActivity());
        ArrayList<String> numberList = db.numberList();       
        String numbers[] = new String[numberList.size()];
        numbers = numberList.toArray(numbers);


        try {           
            SmsManager smsManager = SmsManager.getDefault();
            for(String number : numbers) {
                Log.d("number", number);
                smsManager.sendTextMessage(number, null, msg.getMessage(), sentPendIntent, delivered_pendintent);
            }
            Toast.makeText(getActivity(), "Automatic Texts Successfull", Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            Toast.makeText(getActivity(), "Texts Failed !!", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
    }

当我按下音量时,我的应用程序停止,我在logcat中遇到以下错误。

05-11 12:18:29.726: E/AndroidRuntime(828): java.lang.NullPointerException
05-11 12:18:29.726: E/AndroidRuntime(828):  at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)

请帮助我不知道如何解决这个问题

1 个答案:

答案 0 :(得分:3)

您传递给Context构造函数的SQLiteOpenHelper为空。

假设ContactsManager是你的助手类,在这里

db = new ContactsManager(getActivity());

在片段附加到活动之前,您将实例化助手,getActivity()返回null。使用Context的其他一些来源,例如传递YourActivity.this作为参数。