在解析期间从DefaultHandler访问首选项和数据库操作似乎超出了处理程序的范围

时间:2011-05-20 02:08:39

标签: android rss preferences sax sharedpreferences

当我尝试在我工作的SAX xml处理程序中访问SharedPreferences时,我无法获得任何prefs来读取和写入...此行不断崩溃..

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();                                            

}




}

并始终收到logcat PreferenceManager类型中的方法getDefaultSharedPreferences(Context) 不适用于论点......

在解析期间我有一些标志设置为put我需要在处理标签期间设置这些内部字符串pref标志....似乎我的上下文无法解决。

我有使用绑定器的概念,并且可能在我的主活动上放置一个监听器来调用执行xml处理的处理程序。我已经尝试了各种方法将上下文传递给处理程序,看起来DefaultHandler是一个黑洞..

现在我正在尝试在处理程序中创建一个List,并查看我是否可以将其传递回主活动...

我真的需要通过我在数据库处理程序中设置的sqllite数据库插入操作来放置xml记录..但是对于我的生活我不能。

            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处理程序传递的记录......我将在xml处理之后执行我的db / pref操作。 :)

 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() );   
             }  


        }  

Lenn

0 个答案:

没有答案