я определил пользовательский класс предпочтений, который расширяет класс Dialogpreference для деятельности установок,Как вернуться к основной деятельности от onDialogClosed метода в классе DialogPreference
public class YesNoPreference extends DialogPreference {
private boolean mWasPositiveResult;
DashboardActivity dashboardActivity;
Context prefContext;
public YesNoPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
userSession = new UserSessions(context);
prefContext = context;
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (callChangeListener(positiveResult)) {
setValue(positiveResult);
/* Unset all user shared preferences */
userSession.unsetSessionData();
try {
dashboardActivity = new DashboardActivity();
//dashboardActivity.loginScreen();
Intent dashboard = new Intent(prefContext, DashboardActivity.class);
dashboardActivity.startActivity(dashboard);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* Sets the value of this preference, and saves it to the persistent store
* if required.
*
* @param value The value of the preference.
*/
public void setValue(boolean value) {
mWasPositiveResult = value;
persistBoolean(value);
notifyDependencyChange(!value);
}
Am использованием dialogprefernce для выхода пользователя из приложения. Поэтому, если пользователь выбирает «ОК», параметры sharedprefernces должны быть отменены, а затем пользователь должен быть направлен на страницу входа в систему.
Я попытался создать функцию в классе Activity и затем вызвать ее в этом классе. Также используется класс Intent, но выполнение останавливается на
dashboardActivity.startActivity(dashboard);
и генерирует исключение Null Pointer.
Пожалуйста, помогите мне, чтобы найти решение.
public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}
}
public class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.pref_settings);
}
}
спасибо большое ... это сработало. Не могли бы вы также помочь мне понять, почему мы должны использовать объект Context, а не объект активности? Заранее спасибо – Mamta
@Mamta: вы получаете 'NullPointerexception', потому что активность не такая же, как обычный класс java. как в java, мы создаем объект для доступа к любому методу из класса. никогда не пытайтесь создать объект Activity перед тем, как это всегда выкинет «NullPointerexception», если Activity не запущен, как в вашем случае DashboardActivity не запущен. –