2017-08-13 2 views
0

J'ai un problème lorsque je navigue vers l'activité suivante via Intent.Accédez à Activité suivante après avoir cliqué sur le bouton dans la boîte de dialogue d'alerte (s'affiche après avoir cliqué sur la préférence Déconnexion)

L'erreur est:

"ne peut pas résoudre intention » constructeur (anonymous.android.content.DialogInterface.OnClickListener, java lang.Class)"

Je dois pour revenir à la écran de connexion en cliquant sur le bouton de déconnexion.

Voici mon code ci-dessous:

public class SettingsActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_settings); 
    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    SettingsFragment settingsFragment = new SettingsFragment(); 
    fragmentTransaction.add(android.R.id.content,settingsFragment, "SETTINGS_FRAGMENT"); 
    fragmentTransaction.commit(); 


    } 

public static class SettingsFragment extends PreferenceFragment { 

    public void onClick(){ 
     AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); 
     alert.setTitle(getResources().getString(R.string.log_out)); 
     //Set up your AlertDialog and buttons 
     alert.setMessage(getResources().getString(R.string.are_you_sure_you_want_to_log_out_of_yoqa)); 
     alert.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 

      } 
     }); 
     alert.setPositiveButton(R.string.logout, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       Intent i = new Intent(this,LoginActivity.class); 
       startActivity(i); 
      } 
     }); 
     alert.setCancelable(true); 
     alert.show(); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.pref_settings); 
     Preference myPref = findPreference("logout"); 
     myPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 
      @Override 
      public boolean onPreferenceClick(Preference preference) { 
       onClick(); 
       return true; 
      } 
     }); 

    } 

    } 

} 

Répondre

1

Remplacer

Intent i = new Intent(this,LoginActivity.class); 

avec

Intent i = new Intent(SettingsFragment.this.getActivity(), LoginActivity.class); 
0

Vous naviguez de Fragment. Ainsi, à partir de Fragment vous obtenez le context et démarrez le activity en utilisant getActiviy().

Modifier ceci:

Intent i = new Intent(this,LoginActivity.class); 

Avec:

Intent i = new Intent(getActivity(), LoginActivity.class); 

Vous devez vous enregistrer votre classe activity dans le fichier AndroidManifest.