2013-05-09 2 views
1

내가 취하려고하는 것은 누군가가 설정에서 돌아와 환경 설정을 변경할 때 내보기를 새로 고치는 것입니다. 나는 이것이 효과가있을 것이라고 생각했지만 그렇지 않다. 내가 어떻게 이것을 달성 할 수 있는지에 대한 아이디어가 있습니까?프래그먼트 새로 고침 설정 변경보기 뒤로

import java.text.SimpleDateFormat; 
    import java.util.Calendar; 
    import com.projectcaruso.naturalfamilyplanning.R; 
    import android.annotation.SuppressLint; 
    import android.app.DatePickerDialog.OnDateSetListener; 
    import android.content.SharedPreferences; 
    import android.os.Bundle; 
    import android.preference.PreferenceManager; 
    import android.support.v4.app.Fragment; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.DatePicker; 
    import android.widget.TextView; 

    public class ChartingFragment extends Fragment implements OnDateSetListener { 
     SharedPreferences mPreferences; 
     Boolean symptothermal; 
     Boolean mucus_stamps; 
     Boolean fertile_infertile; 

     @Override 
     public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
      // TODO Auto-generated method stub 
     }  

     public void showDatePickerDialog(View v) { 
      DatePickerFragment newFragment = new DatePickerFragment(); 
      newFragment.show(getChildFragmentManager(), "datePicker"); 
     } 

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

     private void init() { 
      mPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
      symptothermal = mPreferences.getBoolean("symptothermal", true); 
      mucus_stamps = mPreferences.getBoolean("mucus_stamps", true); 
      fertile_infertile = mPreferences.getBoolean("fertile_infertil", true); 
     } 

     @SuppressLint("SimpleDateFormat") 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View view; 

      view = setcontrolvisability(inflater); 

      return view; 
      } 

     @Override 
     public void onResume() { 
       super.onResume(); 
       View vg = getView().findViewById(R.id.charting); 
       vg.invalidate(); 
       init(); 

     } 

     private View setcontrolvisability(LayoutInflater inflater) { 
      // TODO Auto-generated method stub 
      View view = inflater.inflate(R.layout.fragment_charting, null); 
      TextView temp; 
      if (!symptothermal) { 
        temp = (TextView) view.findViewById(R.id.temp); 
        temp.setVisibility(View.GONE); 
        temp = (TextView) view.findViewById(R.id.tempvalue); 
        temp.setVisibility(View.GONE); 
       } 

      if (!mucus_stamps) { 
       temp = (TextView) view.findViewById(R.id.stamp); 
       temp.setVisibility(View.GONE); 
       temp = (TextView) view.findViewById(R.id.stampvalue); 
       temp.setVisibility(View.GONE); 
      } 

      if (!fertile_infertile) { 
       temp = (TextView) view.findViewById(R.id.fertile); 
       temp.setVisibility(View.GONE); 
       temp = (TextView) view.findViewById(R.id.fertileswitch); 
       temp.setVisibility(View.GONE); 
      } 

      temp = (TextView) view.findViewById(R.id.dateselected); 
      SimpleDateFormat dfDate_day= new SimpleDateFormat("MM/dd/yyyy"); 
      String dt=""; 
      Calendar c = Calendar.getInstance(); 
      dt=dfDate_day.format(c.getTime()); 
      temp.setText(dt); 

      return view; 
     } 


    } 

답변

0

난에 startActivityForResult를 사용하여 세부 평가 활동 (FragmentActivity)가 변경된 경우 번들을 통과하는 것이 좋습니다 것입니다. 당신의 활동에서

1) 환경 활동 시작 :

Intent intent = new Intent(this, PreferenceActivity.class); 
if (!this.isFinishing()) 
startActivityForResult(intent, REQUEST_UPDATE); 

2)

@Override 
protected void onActivityResult(int reqCode, int resCode, Intent data) { 
    super.onActivityResult(reqCode, resCode, data); 
    Log.d(TAG, "Received Result: " + reqCode + "/" + resCode); 
} 

3 onActivityResult를 재정의) 하위 활동 (PreferenceActivity를) 모니터의 키를 변경하고 번들로 전달 원한다면

public class PrefsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener, 
    OnPreferenceChangeListener { 

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

     // Load the preferences from an XML resource 
     addPreferencesFromResource(R.xml.preferences); 
    } 

    @Override 
    public boolean onPreferenceChange(Preference arg0, Object arg1) { 
     getParent().setResult(MainActivity.RESULT_PREFERENCES_CHANGED); // constant 
    } 

@Override 
public void onResume() { 
    super.onResume(); 
    getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); 
} 

@Override 
public void onPause() { 
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); 
    super.onPause(); 
} 
}