2016-06-28 5 views
0

共有設定に保存されている値を使用してNumberPickerを更新したいとします。これはフラグメント内ですべて起こります。ユーザがクリックするたびにonValueChange()メソッドを呼び出すボタンもあります。NumberPickerのonvaluechangeをSharedPreferencesから呼び出す方法は?

HomeFragment.java

import android.content.SharedPreferences; 
import android.widget.NumberPicker; 


public class HomeFragment extends Fragment { 

NumberPicker numberPicker; 
SharedPreferences sharedPref; 

public HomeFragment() { 
    // Required empty public constructor 
} 

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

    sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 

    numberPicker = (NumberPicker) rootView.findViewById(R.id.np); 

    //Populate NumberPicker values from minimum and maximum value range 
    //Set the minimum value of NumberPicker 
    numberPicker.setMinValue(0); 
    //Specify the maximum value/number of NumberPicker 
    numberPicker.setMaxValue(239); 

    //Gets whether the selector wheel wraps when reaching the min/max value. 
    numberPicker.setWrapSelectorWheel(true); 

    //Set a value change listener for NumberPicker 
    final NumberPicker.OnValueChangeListener np_listener = new NumberPicker.OnValueChangeListener() { 
     @Override 
     public void onValueChange(NumberPicker picker, int oldVal, int newVal){ 

      //Statement goes here... 

      SharedPreferences.Editor editor = sharedPref.edit(); 
      editor.putInt("someInteger", newVal); 
      editor.commit(); 
     } 
    }; 

    numberPicker.setOnValueChangedListener(np_listener); 

    b1 = (Button) rootView.findViewById(R.id.button); 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      int oldValue = numberPicker.getValue(); 
      numberPicker.setValue(oldValue + 1); 
      np_listener.onValueChange(numberPicker, oldValue, oldValue + 1); 
     } 
    }); 


    // Inflate the layout for this fragment 
    return rootView; 
} 
} 

はたびNumberPicker値が変化し、私は環境設定でそれを保存していますが、どこの値を取得しますか?

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
int someInteger = sharedPref.getInt("someInteger", 0); 

をしかし、ここでonCreate()またはonCreateView()の内側に、このコードを置くために:私は、コードを取得するために知っていますか?値が取得された後は、onValueChange()を呼び出すと、そのメソッド内のすべてのステートメントが実行されます。

答えて

0

SharedPreferencesから電話する必要はありません。

onCreateViewの内部には、setValueメソッドを使用してNumberPickerの値を設定します。

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // ... some code ... 

    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
    // Use default value 0 if key does not exist 
    int someInteger = sharedPref.getInt("someInteger", 0); 

    numberPicker = (NumberPicker) rootView.findViewById(R.id.np); 
    numberPicker.setValue(someInteger); 

    // ... 

} 
+0

し、呼び出し 'onValueChange()'、私は 'np_listener.onValueChange(numberPicker、someInteger - 1、someInteger)を使用しています;'リスナーが数ピッカーに追加された直後。 –

関連する問題