单击警报对话框中的按钮后导航到下一个 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。
我在通过 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。