Android: сохраняйте действия назначения в комплекте - PullRequest
0 голосов
/ 22 ноября 2011

Так что я работаю над этим проектом, и он довольно большой по размеру. Я поставил своего рода «секретную» систему входа в систему безопасности.

Практически все действия расширяют класс subActivity, а subActivity расширяет Activity. Это позволило мне автоматически создавать каждую форму .putExtra(), когда она запускает новое действие, и на каждом onCreate() она проверяет входящие данные и определяет, должно ли оно заставить пользователя войти в систему (подтолкнуть их к LoginActivity). .

Так что сейчас активность при входе в систему при успешном входе в систему загружается до MainActivity. Я хочу, чтобы он динамически загружал активность, которой в последний раз пользовался пользователь ...

Это означает, что класс действий, которые запустили LoginActivity в дополнениях, затем, при успешном входе в систему, LoginActivity, получит класс из дополнений и использует его для запуска Activity.

Я ищу самый простой способ, который я пытался сериализовать, но у меня было много проблем, и я подумал, что должен быть другой способ просто передать ссылку на класс 'destination'.

Надеюсь, это имеет смысл!

Приветствия

Ответы [ 3 ]

1 голос
/ 22 ноября 2011

Вы можете использовать API отражения Java:

Назовите свою активность входа в систему следующим образом:

Intent intent = new Intent(this, LoginActivity.class);
intent.putExtra("activity", getClass().getName());
startActivity(intent);

Затем проанализируйте имя вызывающей деятельности в активности входа и вернитесь к ней после успешного входа.:

private String mActivity;

@Override public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);
    // ...

    mActivity = "";
    Bundle extras = getIntent().getExtras();
    if (extras != null)
        mActivity = extras.getString("activity");
    }
}

@Override public void onClick(View view)
{
    try {
        Class<?> cls = Class.forName(mActivity);
        startActivity(new Intent(this, cls));
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}
0 голосов
/ 22 ноября 2011

Вы можете начать свою активность входа в систему с помощью startActivityForResult, а затем проверить результат активности входа в свою основную деятельность.Смотрите здесь http://developer.android.com/reference/android/app/Activity.html#StartingActivities

0 голосов
/ 22 ноября 2011

В LoginActivity просто позвоните finish(), который вернется к следующему Activity в стеке, в вашем случае - к предыдущему.

...