2017-03-12 10 views
0

私はPreferenceFragmentを使用して、コールDialogFragmentにdialog.setTargetFragmentでPreferenceFragmentまたはPreferenceFragmentCompat

SettingsActivity.java

public class SettingsActivity extends AppCompatActivity{ 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getFragmentManager() 
     .beginTransaction() 
     .replace(android.R.id.content, new SettingsFragment()) 
     .commit(); 
    } 

    public static class SettingsFragment extends PreferenceFragment { 

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

      Preference switchPreference = (SwitchPreference) findPreference("switch_preference_1"); 
      switchPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
       @Override 
       public boolean onPreferenceChange(Preference preference, Object newValue) { 
        AcceptDialog dialog = new AcceptDialog(); 
        dialog.setTargetFragment(SettingsFragment.this, 0); 
        return true; 
       } 
      }); 
     } 
    } 
} 

AcceptDialog.java

public class AcceptDialog extends DialogFragment { 
    @Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     new AlertDialog.Builder(getActivity()) 
       .setTitle("Title") 
       .setMessage("Message") 
       .create(); 
    } 
} 

とエラーをしようとしています(...);私はPreferenceFragmentCompatにPreferenceFragmentを変更Whem

Wrong 1st argument type. Found: 'com.android.cmdev.prefcompattest.SettingsActivity.SettingsFragment', required: 'android.support.v4.app.Fragment' 

このエラーは消えていますが、フラグメントトランザクションの新しい表示されている

getFragmentManager() 
     .beginTransaction() 
     .replace(android.R.id.content, new SettingsFragment()) 
     .commit(); 

エラー:

は何が問題である
Wrong 2nd argument type. Found: 'com.android.cmdev.prefcompattest.SettingsActivity.SettingsFragment', required: 'android.app.Fragment' 

とどのようにそれを修正するために?

答えて

0

getFragmentManagerの代わりにサポートフラグメントを使用してgetSupportFragmentManagerを使用してください。

関連する問題