2012-02-17 20 views
0

私はこの機能を使用しようとしていますが、できません。私のアプリケーションはSQLデータベースを持っておらず、.xmlファイルしかありません。私は、設定を見てファイルを変更したいと思います。たとえば、data.xmlファイルやfile2.xmlファイルを表示したり、チェックボックスをオンまたはオフにしたりすることができます。Android - 共有プレビューで表示するファイルを変更する方法

活動PreferencesFromXml:

public class PreferencesFromXml extends PreferenceActivity{ 

    public static final String COLORE_DEFAULT = "#000000"; 

    public static final String COLORE_PREF = "colore"; 

    public static final String TITOLO_PREF = "titolo"; 

    public static final String USA_TITOLO_CUSTOM_PREF = "usa_titolo_custom"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
      super.onCreate(savedInstanceState); 

      addPreferencesFromResource(R.xml.preferences); 

      SharedPreferences prefs =  PreferenceManager.getDefaultSharedPreferences(this); 

      Preference titoloPrefs = findPreference(TITOLO_PREF); 
      titoloPrefs.setSummary(prefs.getString(TITOLO_PREF, getString(R.string.titolo_custom))); 
      titoloPrefs.setOnPreferenceChangeListener(new OnPreferenceChangeListener() 
      { 
        public boolean onPreferenceChange(Preference prefs, Object value) 
        { 
          prefs.setSummary((CharSequence) value); 
          return true; 
        } 
      }); 
    } 
} 

主な活動:

public class Main extends ExpandableListActivity{ 
    ExpandableListAdapter mAdapter; 
    private ArrayList<Group> groups; 

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

      groups = readGroupsFromXml(); 

      mAdapter = new MyExpandableListAdapter(getLayoutInflater(), groups); 
      setListAdapter(mAdapter); 
      registerForContextMenu(getExpandableListView()); 
    } 

    public ArrayList<Group> readGroupsFromXml() 
    { 
      try 
      { 
        final XmlHandler handler = new XmlHandler(); 
        final SAXParser sp = SAXParserFactory.newInstance().newSAXParser(); 
        sp.parse(getApplicationContext().getResources().openRawResource(R.raw.data), handler); 
        return handler.getGroups(); 
      } 
      catch (Exception e) 
      { 
        Log.e("Error", "xml", e); 
      } 
      return null; 
    } 

それから私は、チェックボックスを選択するかしないときに使用するファイルを選択するために何をすべきかわかりません。 (それが正しいかどうかはわからないが)私はここに停止:

@Override 
protected void onResume(){ 
    super.onResume(); 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    Editor editor = prefs.edit(); 

    String usa_titolo_custom; 
      if (prefs.getBoolean(PreferencesFromXml.USA_TITOLO_CUSTOM_PREF, false)) 
      { 

コードの.xmlファイルはRES /生に配置されているから、あなたが見ることができるように。ご協力ありがとうございました。

答えて

1

ブール値の共有設定を設定して使用するだけです。グローバル変数としてこれらを入れて...

SharedPreferences data; 
public static String filename = "filename"; 
boolean b; 

はその後onCreate()

data = getSharedPreferences(filename, 0); 

を入れdefaultが真か偽である。このようなブール値を取得

SharedPreferences.Editor editor = data.edit(); 
editor.putBoolean("data", b); 
editor.commit(); 

とブール値を設定し、 の場合は、が設定されていません。

b = data.getBoolean("data", default); 

その後、bがtrueの場合、それはdata2.xmlを使用して偽だ場合、それは、data.xmlファイルを使用しています

public ArrayList<Group> readGroupsFromXml() { 

b = data.getBoolean("data", false); 
if (b == true){ 
    try { 
     final XmlHandler handler = new XmlHandler(); 
     final SAXParser sp = SAXParserFactory.newInstance().newSAXParser(); 
     sp.parse(getApplicationContext().getResources().openRawResource(R.raw.data), handler); 
     return handler.getGroups(); 
    } catch (Exception e) { 
     Log.e("Error", "xml", e); 
    } 
} else { 
    try { 
     final XmlHandler handler = new XmlHandler(); 
     final SAXParser sp = SAXParserFactory.newInstance().newSAXParser(); 
     sp.parse(getApplicationContext().getResources().openRawResource(R.raw.data2), handler); 
     return handler.getGroups(); 
    } catch (Exception e) { 
     Log.e("Error", "xml", e); 
     } 
    } 
return null; 

} 

のようなものを使用。

+0

ありがとうございました。残念ながら、どのアクティビティでコードを記述するのか分かりませんでした。 'public ArrayList readGroupsFromXml(){'など。私はそれがメインアクティビティにあることは分かっていますが、残りは?私は他のアクティビティで何を書く必要があるのか​​分かりませんでした。チェックボックスは 'public static final String USA_TITOLO_CUSTOM_PREF =" usa_titolo_custom ";'です。 ご迷惑をおかけします。 – Carontes

関連する問題