0

我正在开发一个应用程序,我必须在其中使用 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

4 回答 4

2

onResume()在LoginActivity中做一些事情

@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();
                    }
                });
    }
}
于 2013-09-06T07:16:48.313 回答
0

有一个非常简单有用的解决方案可以通过点击应用图标返回到关闭的(通过 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();
}

}

于 2013-09-06T08:06:29.557 回答
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    
}
于 2013-09-06T07:21:34.533 回答
-2

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

然后,

if (LOGGEDIN)
// Go To Second Activity
于 2013-09-06T07:16:41.233 回答