应用程序恢复时打开第二个活动

时间:2013-09-06 07:09:45

标签: android facebook

我正在开发一个应用程序,我必须使用Fcaebook sdk for android。我要做的是,当用户成功登录应用程序时,用户转到第二个活动。但是,当用户通过按下主页按钮从第二个活动移动到主页,并且当用户再次从设备点击应用程序图标时,第二个活动应该在那里,而不是登录活动。这是我的代码......

login.setSessionStatusCallback(new Session.StatusCallback() {

            @Override
            public void call(Session session, SessionState state, Exception exception) {
                // TODO Auto-generated method stub
                if(session.isOpened())
                {
                    Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                        @Override
                        public void onCompleted(GraphUser user, Response response) {
                            String email = user.asMap().get("email").toString();
                            Toast.makeText(getBaseContext(), email + " " + user.getBirthday() , 1000).show();
                            Intent in = new Intent(getBaseContext(), Second.class);
                            in.putExtra("ID", user.getId());
                            startActivity(in);
                            Login.this.finish();
                        }
                    });
                }

            }
        });

当我从第二个活动按主页按钮后点击应用程序图标时,登录活动以注销按钮开始。但是我想在这里开始第二次活动。需要做什么?

4 个答案:

答案 0 :(得分:2)

在LoginActivity的onResume()中执行某些操作

@Override
protected void onResume() {

    super.onResume();
    if (session!=null&&session.isOpened()) {
        Request.executeMeRequestAsync(session,new Request.GraphUserCallback() {

                    @Override
                    public void onCompleted(GraphUser user,
                            Response response) {
                        String email = user.asMap().get("email").toString();
                        Toast.makeText(getBaseContext(),
                                email + " " + user.getBirthday(), 1000)
                                .show();
                        Intent in = new Intent(getBaseContext(),
                                Second.class);
                        in.putExtra("ID", user.getId());
                        startActivity(in);
                        Login.this.finish();
                    }
                });
    }
}

答案 1 :(得分:0)

您需要将应用程序逻辑与活动分开。

即。将用户数据存储在静态变量/单例中,并检查用户是否已初始化并登录。如果是,立即启动第二个活动

if (MyGlobalData.user == null) {
  login.setSessionStatusCallback(new Session.StatusCallback() {
  ...
                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        MyGlobalData.user = user;
                        String email = user.asMap().get("email").toString();
                        ...
} else {
   user = MyGlobalData.user;
   String email = user.asMap().get("email").toString();
   ...  // start second activity immediately    
}

答案 2 :(得分:0)

通过app icon点击返回关闭(通过HOME按钮)活动有一个非常简单有用的解决方案。

从新添加的活动启动您的应用程序(我们称之为MainActivity)。对于AndroidManifest.xml中设置的活动android:launchMode =“singleInstance”。在此活动中,启动您希望在应用中首先运行的活动。并在开始完成MainActivity(finish())之后。就这样。下面提供了该示例

<application
        android:name="com.myapp.android"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name">
    <activity
            android:name="com.myapp.android.MainActivity"
            android:launchMode="singleInstance">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
   <activity android:name="com.myapp.android.LoginActivity"/>

...

公共类MainActivity扩展了Activity {

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

    Intent i = new Intent(this, LoginActivity.class);
    startActivity(i);

    finish();
}

}

答案 3 :(得分:-2)

如果登录完成,请使用SharedPreference Boolen LOGGEDIN=true

然后,

if (LOGGEDIN)
// Go To Second Activity