2012-06-09 55 views
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(); 

    } 

} 

儿童活动(脸谱)

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(); 
    } 
} 

任何帮助????

回答

0

查看您的代码后几乎没有可能性。由于FB非常直接,但我不知道你为什么这样做。根据您的代码...

  • 如果会话有效,则不处理。因此,如果会话有效,请完成活动。
  • 您应该处理Listener中的所有事件。
  • 您不应在onActivityResult中创建新的意图,请使用在该函数中传递的意图。
+0

雅我没有处理,如果会议是有效的。纠正了这一点。现在只有第一个疑问。如果用户不想登录并在那个时候再次按下,则显示空白屏幕。而且他必须再次回去参加家长活动。请帮助dis也... –

+0

好吧,现在当用户按下后退按钮,您将在facebookMain活动中的“onResume()”上获得流量。这就是你坚持使用黑屏的原因。我有与ImageCrop相同的概率,通过使用普通的类并传递给该类的活动解决了我的问题。所以这不会是一个中间活动。 – Samdrain

+0

所以将不得不添加“onResume()”与“完成()”在其中? –