单击警报对话框中的按钮后导航到下一个 Activity(在单击“注销”首选项后出现)

Navigate to next Activity after clicking on button in alert dialog(appears after clicking on Log out preference)

我在通过 Intent 导航到下一个 activity 时遇到问题。

错误是:

"Cannot resolve constructor '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 class。