我正在开发一个应用程序,我必须使用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();
}
});
}
}
});
当我从第二个活动按主页按钮后点击应用程序图标时,登录活动以注销按钮开始。但是我想在这里开始第二次活动。需要做什么?
答案 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