0

Я пытаюсь создать AlertDialog в своем PreferenceFragment, чтобы пользователь мог подтвердить, что он хочет удалить все пользовательские данные.AlertDialog in PreferenceFragment crashes app

Это код, который я сделал:

public class SettingsFragment extends PreferenceFragment { 

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

    Bundle b = getArguments(); 
    addPreferencesFromResource(R.xml.preferences); 


    Preference button = (Preference)findPreference(getString(R.string.Delete_user_info)); 
    button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 
     @TargetApi(Build.VERSION_CODES.M) 
     @Override 
     public boolean onPreferenceClick(Preference preference) { 
      //An Alertbuilder 
      new AlertDialog.Builder(getContext()) //THIS LINE CRASHES THE APP 
        .setMessage("Do you really want to permanently delete your likes?\nYou will not be able to restore them!!") 
        .setCancelable(true) 
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialogInterface, int i) { 
          new DeleteUserInfo().execute(); 
         } 
        }) 
        .setNegativeButton("No", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialogInterface, int i) { 
          dialogInterface.cancel(); 
         } 
        }) 
        .create() 
        .show(); 
      return true; 
     } 
    }); 
} 
} 

И это результат в LogCat:

11-01 18:58:38.501 29821-29821/com.astudio.andreas.mapstest E/AndroidRuntime: FATAL EXCEPTION: main 
11-01 18:58:38.501 29821-29821/com.astudio.andreas.mapstest E/AndroidRuntime: Process: com.astudio.andreas.mapstest, PID: 29821 
11-01 18:58:38.501 29821-29821/com.astudio.andreas.mapstest E/AndroidRuntime: java.lang.NoSuchMethodError: No virtual method getContext()Landroid/content/Context; in class Lcom/astudio/andreas/mapstest/SettingsFragment; or its super classes (declaration of 'com.astudio.andreas.mapstest.SettingsFragment' appears in /data/app/com.astudio.andreas.mapstest-1/base.apk) 
11-01 18:58:38.501 29821-29821/com.astudio.andreas.mapstest E/AndroidRuntime:  at com.astudio.andreas.mapstest.SettingsFragment$1.onPreferenceClick(SettingsFragment.java:41) 

Любые идеи о том, как я могу ссылаться на Context правильно?

ответ

2

Использовать getActivity() вместо getContext().

+1

Думал, что я это пробовал. Чуть смущенно. Большое спасибо! – user1736049