如何从应用程序的不同部分启动活动?

时间:2013-06-06 12:23:06

标签: android

所以我有两个活动,它们是我的应用程序中用户登录过程的一部分。我希望能够灵活地从应用程序的不同部分启动登录过程,然后转到两个不同的点(有点像重定向URL的事情)。我怎样才能做到这一点? 我能想到的一种方法是发送一些额外的数据以及启动过程以指向应该去的位置的意图。

实施例

A->login1->login2->B
X->login1->login2->Y

非常感谢任何帮助或建议。

3 个答案:

答案 0 :(得分:1)

使用startActivityForResult启动登录活动。在login1和login2中,进行登录过程,然后使用setResult(OK或NOK)然后使用finish,这样您就可以在开始登录之前进入您的活动。

您将在onActivityResult中收到结果,您将测试结果值,并采取相应措施(登录或不登录)。

更多相关信息:http://developer.android.com/reference/android/app/Activity.html#StartingActivities

答案 1 :(得分:1)

可能的解决方案之一如下所示:

public class A extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //...

        Intent intent = new Intent(this, Login1.class);
        intent.putExtra("redirectToComponent", 
                new ComponentName(this, B.class));
        startActivity(intent);
    }
}

class Login1 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //...

        Intent intent = new Intent(this, Login2.class);
        intent.putExtra("redirectToComponent", 
                getIntent().getParcelableExtra("redirectToComponent"));
        startActivity(intent);
    }
}

class Login2 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //...

        ComponentName component = (ComponentName) getIntent().getParcelableExtra(
                "redirectToComponent");
        if(component != null) {
            Intent redirectIntent = new Intent();
            redirectIntent.setComponent(component);
            startActivity(redirectIntent);
        }
    }
}

class B extends Activity {
    //...
}

答案 2 :(得分:0)

您可以使用 putExtra 将登录活动的意图登录后启动或重定向所需活动的名称(字符串),并在登录后添加条件以检查哪个字符串表示要重定向的活动。< / p>

示例:

A->(**putExtra("B")**)->login1->login2->(**getExtra, condition**)->B
X->(**putExtra("Y")**)->login1->login2->(**getExtra, condition**)->Y