Как вернуться к основному действию из метода onDialogClosed в классе DialogPreference

Я определил пользовательский класс предпочтений, который расширяет класс 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);
}

Я использую диалоговое окно для выхода пользователя из приложения. Таким образом, если пользователь выбирает "ОК", общие предпочтения должны быть отменены, а затем пользователь должен быть направлен на страницу входа.

Я попытался создать функцию в классе 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);
   }
}

1 ответ

Решение

Использование

prefContext.startActivity(dashboard);

вместо

dashboardActivity.startActivity(dashboard);

чтобы получить доступ startActivity метод. В настоящее время вы пытаетесь создать экземпляр DashboardActivity Активность для доступа startActivity метод. использование prefContext для начала деятельности

Другие вопросы по тегам