2011-07-18 22 views
0

私は自分のアプリに環境設定を追加しようとしていますが、動作させることはできません。ここでプリファレンスの使用が正しくありません

は、ここに私のres/xmlの/あるpreferences.xml

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <ListPreference 
     android:key="format" 
     android:title="Saving Format" 
     android:summary="Select the file format" 
     android:defaultValue=".jpg" 
     android:entries="@array/format" 
     android:entryValues="@array/formatValues" />   
</PreferenceScreen> 

である私の値である/ここ

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="format"> 
     <item name=".jpg">JPEG</item> 
     <item name=".gif">GIF</item> 

    </string-array> 

    <string-array name="formatValues"> 
     <item name=".jpg">.jpg</item> 
     <item name=".gif">.gif</item> 

    </string-array> 
</resources> 

をarray.xml私の好みの活動である:

ここ
package com.sass.recorder; 

import android.os.Bundle; 
import android.preference.PreferenceActivity; 

public class MyPreferences extends PreferenceActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) {   
     super.onCreate(savedInstanceState);   
     addPreferencesFromResource(R.xml.preferences);   
    } 

} 

主なアクティビティクラス:

...imports.. 

public class MyApp extends Activity { 
...Initializations.. 
SharedPreferences preferences; 
..... 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
     .... 
     private OnClickListener mOneShotListener = new OnClickListener() { 
     public void onClick(View v) { 
     //evaluate preferences and change the path variable 
     if (preferences.getString("format", ".jpg") == ".jpg") { 
     path = "/sdcard/output/" + editText1.getText() + ".jpg"; 
     } else if (preferences.getString("format", ".gif") == ".gif"){ 
     path = "/sdcard/output/" + editText1.getText() + ".gif"; 
     } 
     } 
     } 
    } 
} 

私はここに貼り付けていないメニューから優先権が働きますが、環境設定の評価を持つボタンは単にクリックや反応しません。デバッガが行内にNullPointerExceptionを表示することがあります if (preferences.getString("format", ".jpg") == ".jpg")

私が間違っていることは何ですか? ありがとう!

+0

javaの文字列を比較するときに "=="を使用しないでください。equalsまたはequalsIgnoreCaseメソッドを使用してください。 – Dahlgren

答えて

0

変数の設定は、OnClickListListenerで使用されるクラスのインスタンス変数とonCreateメソッドの両方として宣言されています。インスタンス変数は決して初期化されないので、OnClickListenerでアクセスするとnullになります。 MyAppの活性の

preferences = PreferenceManager.getDefaultSharedPreferences(this); 

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 

を変更し、それはおそらく動作します。

関連する問題