0

我创建了一个需要从 Facebook/Twitter/Google 登录才能开始的应用程序。在一个布局中,我为 Facebook、Twitter 和 Google 分别创建了三个开关,它们具有 ON 和 OFF 选项。如果用户从相应帐户登录,我想将特定帐户的开关设为“开启”。例如,如果用户从 Facebook 登录,则只有 Facebook 旁边的开关应该打开。我怎样才能做到这一点?

任何建议将不胜感激,如果有人知道,请向我推荐与此相关的任何教程。下面是我的登录页面代码。我已经显示了 Facebook 部分的登录信息:谢谢 :)

private OnClickListener loginButtonListener = new OnClickListener() {
        @SuppressWarnings("deprecation")
        public void onClick( View v ) {
            String[] permissions = { "offline_access", "publish_stream", "user_photos", "publish_checkins","photo_upload" };


            if(v.getId() == R.id.button1 )
            {
                facebookSwitch = true;
                twitterSwitch = false;
                googleSwitch = false;
                if( !mFacebook.isSessionValid() ) {
                    Toast.makeText(Login.this, "Authorizing", Toast.LENGTH_SHORT).show();
                    mFacebook.authorize(Login.this, permissions, new LoginDialogListener());
                }
                else {
                    Toast.makeText( Login.this, "Has valid session", Toast.LENGTH_SHORT).show();
                    try {
                        JSONObject json = Util.parseJson(mFacebook.request("me"));
                        //Log.d("Login", "11111111111111111");
                        String facebookID = json.getString("id");
                        //Log.d("Login", "22222222222222"); 

                        String firstName = json.getString("first_name");
                        //Log.d("Login", "3333333333333333333");

                        String lastName = json.getString("last_name");
                        //Log.d("Login", "4444444444444444444444");

                        Toast.makeText(Login.this, "You already have a valid session, " + firstName + " " + lastName + ". No need to re-authorize.", Toast.LENGTH_LONG).show();
                        Intent intent = new Intent(Login.this,MainActivity.class);
                        startActivity(intent);
                    }
                    catch( Exception error ) {
                        Toast.makeText( Login.this, error.toString(), Toast.LENGTH_SHORT).show();
                    }
                    catch( FacebookError error ) {
                        Toast.makeText( Login.this, error.toString(), Toast.LENGTH_SHORT).show();
                    }
                }
            }
4

1 回答 1

0

试试这个方法......

-首先创建一个Singleton Class带有 3 个布尔variables for 3 logins info, and thereGetter-Setter`。这里需要单例,这样无论在整个应用程序中从何处调用该类,都只会形成该类的一个对象。所以现在你有一个单一的信息点。

-始终Singleton在另一个开始时或在您需要时检查 Class 的变量Activity,以了解用户是否登录到一个或两个或所有社交网站。

///////////////////////////编辑部分////////////// /////////////

下面是创建单例的简单方法,认为还有更多:

public class Test{

   public static Test uniqueInstance = new Test();

   private Test(){}

   public static Test getInstance(){

      return uniqueInstance;       

      // No matter what but always u will get the same instance.

   }

}

现在要在另一个类中调用此对象,请执行以下操作...

public class Main{

 Test t = Test.getInstance();    // Now use t to call the fields and methods of class T.


}
于 2012-10-26T05:38:45.157 回答