在点击提醒对话框中的按钮(在点击注销首选项后出现)后导航到下一个活动

问题描述:

我在通过Intent导航到下一个活动时遇到问题。在点击提醒对话框中的按钮(在点击注销首选项后出现)后导航到下一个活动

的错误是:

“无法解析构造“意愿(anonymous.android.content.DialogInterface.OnClickListener,JAVA lang.Class)”

我必须导航回通过点击注销按钮登录屏幕。

这里是我下面的代码:

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; 
      } 
     }); 

    } 

    } 

} 

更换

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

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

您是从Fragment导航。因此,从Fragment获得context并使用getActiviy()开始activity

更改此:

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

有了:

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

你必须AndroidManifest文件到您的注册类activity