Доступ к настройкам и операциям с БД из DefaultHandler во время синтаксического анализа, кажется, выходит за рамки обработчика - PullRequest
0 голосов
/ 20 мая 2011

Когда я пытаюсь получить доступ к SharedPreferences в обработчике SAX xml, который у меня работает, я не могу получить какие-либо префы для чтения и записи ... эта строка продолжает падать ..

SharedPreferences mySharedPreferences
                PreferenceManager.getDefaultSharedPreferences(this);

Также во время

много раз сбивалось так много разных способов.

this.db = openHelper.getWritableDatabase ();

все, если я попытаюсь использовать из обработчика

также объявлено

private Context context;
...
...
 @Override
        public void endElement(String namespaceURI, String localName, String qName)
                        throws SAXException {
                if (localName.equals("report")) {
                        this.in_report = false;
      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);  //CRASH!!  on getDefaultSharedPreferences
                preferences.edit().putString("TIMEPERIOD_NUMBER","GREEN").commit();                                            

}




}

и всегда получаю логкат Метод getDefaultSharedPreferences (Context) в типе PreferenceManager неприменимо для аргументов ....

во время синтаксического анализа у меня установлены некоторые флаги, которые мне нужно установить. Мне нужно установить эти флаги pref для внутренней строки во время обработки тегов .... кажется, мой контекст не может быть разрешен.

и у меня есть понятие об использовании связывателя и, возможно, о том, чтобы включить слушателя в мою основную деятельность, которая вызывает обработчик, который выполняет обработку xml. Я пробовал различные способы передачи контекста в обработчик, и кажется, что DefaultHandler является черной дырой ..

я уже пытался создать список в обработчике и проверял, могу ли я передать его обратно в основное действие ...

Мне действительно нужно поместить запись xml с помощью операции вставки sqlite db, которую я настроил в обработчике базы данных ... но я не могу.

            ParsedDataSet fluRec = new ParsedDataSet();

                        fluRec.setSstate(sstate.toString()); 
                        fluRec.setSabbrev(sabbrev.toString());
                        fluRec.setSstate(slabel.toString());
                        fluRec.setSyear(syear.toString());
                        fluRec.setSweek(stimeperiod.toString());
                                    list.add(fluRec);

Я создал симпатичный маленький цикл, который я использую для просмотра записей, которые я передал из обработчика xml ... ... Я буду выполнять свои действия в db / pref после обработки xml. :)

 private static void FluRecordLooper(List<FluDataSet> fluRec){  

             int size=fluRec.size();  
             for (int i = 0; i < size; i++) {  
                 Log.v("MainActivity", "forLoopIncr --> " +  fluRec.get(i).getSabbrev());  
                 Log.v("MainActivity", "forLoopIncr --> " +  fluRec.get(i).getSweek());  
                 Log.v("MainActivity", "forLoopIncr --> " +  fluRec.get(i).getSstate());  
                 Log.v("MainActivity", "forLoopIncr --> " +  fluRec.get(i).getSyear());  
                 Log.v("MainActivity", "forLoopIncr " + fluRec.size() );   
             }  


        }  

Ленн

...