0

アプリケーションで fb ログインを使用したい (これはオプションです)。最初に基本アクティビティを起動し、次に子アクティビティとして fb アクティビティを起動します。ユーザーが戻るボタンを押すと、親アクティビティに戻る必要があります。Facebook のアクティビティの場合、contentview は設定されていません。空白の画面です。次の問題に直面しています。

  1. fb アクティビティが起動されて戻ると、空白の画面が表示されますが、これはおそらく (よくわかりませんが) 設定していないコンテンツ ビューです。この空白の画面ではなく、親アクティビティに向けてほしい。

コードは次のとおりです。

親アクティビティ(ランチャー)

public class AccountSettingsActivity extends Activity {
    /** Called when the activity is first created. */
        Button registerButton;
        Button fbButton;

        AccountSettingsActivity ob ;
        final Context cont = this;
    @Override
    public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.account);
        Log.i ("Location_settings", "In Account Settings Class");

        registerButton = (Button)this.findViewById(R.id.registerbutton);
        fbButton = (Button)this.findViewById(R.id.fbbutton);

        registerButton.setVisibility(1);

        //Toast.makeText(cont, "In Accounts Settings", Toast.LENGTH_LONG);


        fbButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {               
                 Log.i("Account-Settings","fb Button clicked");
                 Intent fb = new Intent(AccountSettingsActivity.this,facebookMain.class);
                 fb.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                 startActivityForResult(fb,0);

            }
        });

        registerButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {               
                 Log.i("Account-Settings","Register Button clicked");
                 ProgressDialog dialog = ProgressDialog.show(AccountSettingsActivity.this, "Syncing with server", "Please wait...", true);
                 new initialsync(dialog).execute("");            

            }
        });

        fbButton.performClick();

    }

}

子どもの活動(facebook)

public class facebookMain extends Activity {

    String abc;
    Facebook facebook = new Facebook("1234567890");
    private SharedPreferences mPrefs;
        private Bundle parameters;
        facebookMain ob;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /*
         * Get existing access_token if any
         */


        mPrefs = getPreferences(MODE_PRIVATE);
        String access_token = mPrefs.getString("access_token", null);
        long expires = mPrefs.getLong("access_expires", 0);
        if(access_token != null) {
            facebook.setAccessToken(access_token);
        }
        if(expires != 0) {
            facebook.setAccessExpires(expires);
        }

        /*
         * Only call authorize if the access_token has expired.
         */
        if(!facebook.isSessionValid()) {

            facebook.authorize(this, new String[] { "read_friendlists", "read_mailbox", "email" }, new DialogListener() {
                @Override
                public void onComplete(Bundle values) {
                    SharedPreferences.Editor editor = mPrefs.edit();
                    editor.putString("access_token", facebook.getAccessToken());

                    abc = facebook.getAccessToken();


                    editor.putLong("access_expires", facebook.getAccessExpires());
                    editor.commit();

                    Intent intent=new Intent();     
                    intent.putExtra("access token",abc);
                    setResult(RESULT_OK, intent);
                    finish();
                }

                @Override
                public void onFacebookError(FacebookError error) {}


                @Override
                public void onCancel() {
                finish();
                }

                @Override
                public void onError(DialogError e) {
                        // TODO Auto-generated method stub

                }
            });
        }

        if(facebook.isSessionValid())
        {
            SharedPreferences shared = mPrefs;

            abc = shared.getString("access_token", "");

            Intent intent=new Intent();     
            intent.putExtra("access_token",abc);
            setResult(RESULT_OK, intent);
            Toast.makeText(ob,"facebook session valid", Toast.LENGTH_SHORT);
            finish();
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        facebook.authorizeCallback(requestCode, resultCode, data);

        AppLog.logger("facebookmain, Back key pressed");
                    Intent intent=new Intent();     
                    intent.putExtra("abc",abc);
                    setResult(RESULT_OK, intent);
                    finish();
    }
}

何か助けて????

4

1 に答える 1

0

コードを表示した後、可能性はほとんどありません。FBは非常に単純ですが、なぜこれを行っているのかわかりません。あなたのコードによると...

  • セッションが有効な場合は処理していません。セッションが有効な場合は、アクティビティを終了します。
  • Listener ですべてのイベントを処理する必要があります。
  • onActivityResult で新しいインテントを作成しないでください。その関数で渡されたインテントを使用してください。
于 2012-06-09T05:43:07.953 に答える