2017-01-08 2 views
0

Fragmentactivity에 사용하고이 문제로 getSupportFragment을 사용하고 싶습니다.Android의 활동에서 getSupportFragment를 사용하는 방법

android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
SettingsFragment settingsFragment = new SettingsFragment(); 
fragmentTransaction.add(R.id.frame_containerone, settingsFragment, "Setting"); 
fragmentTransaction.commit(); 

내 SettingFragment 코드 :
나는 fragment을 보여주는 activity에 아래의 코드를 작성했습니다

import android.annotation.TargetApi; 
import android.app.Activity; 
import android.content.Context; 
import android.content.SharedPreferences; 
import android.os.Build; 
import android.os.Bundle; 
import android.preference.CheckBoxPreference; 
import android.preference.PreferenceFragment; 
import android.preference.PreferenceManager; 
import android.util.Log; 

import in.nouri.cameraalways.R; 
import in.nouri.cameraalways.Service.OverlayService; 

public class SettingsFragment extends PreferenceFragment { 

    SharedPreferences.OnSharedPreferenceChangeListener listener = null; 

    SharedPreferences defaultSharedPreference; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.preferences); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      defaultSharedPreference = PreferenceManager.getDefaultSharedPreferences(getContext()); 
     } else { 
      defaultSharedPreference = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
     } 
     Log.d("defaultpPref", defaultSharedPreference.getAll().toString()); 
    } 

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 
    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     listener = (SharedPreferences.OnSharedPreferenceChangeListener) activity; 
    } 

    @TargetApi(Build.VERSION_CODES.M) 
    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     listener = (SharedPreferences.OnSharedPreferenceChangeListener) context; 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     listener = null; 
    } 

    @Override 
    public void onResume() { 
     Log.d(getClass().getSimpleName(), "onResume"); 
     super.onResume(); 
     getPreferenceScreen().getSharedPreferences() 
       .registerOnSharedPreferenceChangeListener(listener); 

     CheckBoxPreference preference_enabled = (CheckBoxPreference) this.findPreference(getString(R.string.key_pref_enabled)); 
     preference_enabled.setChecked(OverlayService.isRunning()); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     getPreferenceScreen().getSharedPreferences() 
       .unregisterOnSharedPreferenceChangeListener(listener); 
    } 
} 

을하지만 (활동에 사용되는 조각에 대한 Activity에 위의 코드를 사용하는 경우) 그것은 내게이 메시지를 보여줍니다 :

Please see image

어떻게 해결할 수 있습니까?

+0

:

public static SettingsFragment getInstance() { return new SettingsFragment(); }

이 같은 활동으로 전화 import import android.support.v4.preference.PreferenceFragment; 대신 import android.preference.PreferenceFragment;를 사용하십시오. ' –

+0

@PavneetSingh, 감사하지만 찾을 수 없습니다. android.support.v4.preference.PreferenceFragment; ' –

+0

이 스레드를 사용해보세요. http://stackoverflow.com/questions/9783368/alternatives-to-preferencefragment-with-android-support -v4 –

답변

0

YourFragment는 android.support.v4.app.Fragment 대신 android.app.Fragment 클래스를 서브 클래 싱합니다. 조각에서 import 문을 변경하면 잘 수행 할 수 있습니다.

업데이트 당신의 설정 조각을 사용 import android.support.v7.preference.PreferenceFragmentCompat;에서 대신 import android.preference.PreferenceFragment; . 참고 그것은 당신의 app.gradle 파일에 compile 'com.android.support:preference-v7:24.2.1' 이 필요하다는

+0

setFragment : import'android.annotation.TargetApi;에서 내 수입을 확인하십시오. import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; 가져 오기 android.preference.CheckBoxPreference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; 가져 오기 android.util.Log; import in.nouri.cameraalways.R; import in.nouri.cameraalways.Service.OverlayService; ' –

+0

당신의 조각의 수입을 보여주세요. –

+0

내 업데이트 소식을 참조하십시오. –

0

은 SettingsFragment이처럼 SettingsFragment의 인스턴스를 만듭니다 getSupportFragmentManager().beginTransaction().Add(R.id.container, PrivacyFragment.getInstance()).commit();