2013-07-07 102 views
0

我想使用Facebook的Android SDK的官方教程here中給出的相同的代碼。我還設法制作了教程應用程序。但是,現在我需要在我的另一個應用程序中完全相似的代碼。然而,這一次,Eclipse說,代碼中給出的onResumeFragments()方法不能被覆蓋,如果我註釋掉@Override表示法和super.onResumeFragments(),並嘗試運行該項目,我的應用程序顯示空白活動。 這裏是代碼我跑..onResumeFragments不能被覆蓋?

package com.gotechno.technovanza13; 

import com.facebook.Session; 
import com.facebook.SessionState; 
import com.facebook.UiLifecycleHelper; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.view.Menu; 


public class FbLoginActivity extends FragmentActivity { 

    private static final int SPLASH = 0; 
    private static final int SELECTION = 1; 
    private static final int FRAGMENT_COUNT = SELECTION +1; 
    private Fragment[] fragments = new Fragment[FRAGMENT_COUNT]; 
    private boolean isResumed = false; 
    private UiLifecycleHelper uiHelper; 
    private Session.StatusCallback callback = 
     new Session.StatusCallback() { 
     @Override 
     public void call(Session session, SessionState state, Exception exception) { 
      onSessionStateChange(session, state, exception); 
     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     uiHelper = new UiLifecycleHelper(this, callback); 
     uiHelper.onCreate(savedInstanceState); 
     setContentView(R.layout.fb_fragment_container); 

     FragmentManager fm=getSupportFragmentManager(); 
     fragments[SPLASH] = fm.findFragmentById(R.id.splashFragment); 
     fragments[SELECTION] = fm.findFragmentById(R.id.selectionFragment); 

     FragmentTransaction transaction = fm.beginTransaction(); 
     for(int i = 0; i < fragments.length; i++) { 
      transaction.hide(fragments[i]); 
     } 
     transaction.commit(); 
    } 

    private void showFragment(int fragmentIndex, boolean addToBackStack) { 
     FragmentManager fm = getSupportFragmentManager(); 
     FragmentTransaction transaction = fm.beginTransaction(); 
     for (int i = 0; i < fragments.length; i++) { 
      if (i == fragmentIndex) { 
       transaction.show(fragments[i]); 
      } else { 
       transaction.hide(fragments[i]); 
      } 
     } 
     if (addToBackStack) { 
      transaction.addToBackStack(null); 
     } 
     transaction.commit(); 
    } 

    private void onSessionStateChange(Session session, SessionState state, Exception  exception) { 
     // Only make changes if the activity is visible 
     if (isResumed) { 
      FragmentManager manager = getSupportFragmentManager(); 
      // Get the number of entries in the back stack 
      int backStackSize = manager.getBackStackEntryCount(); 
      // Clear the back stack 
      for (int i = 0; i < backStackSize; i++) { 
       manager.popBackStack(); 
      } 
      if (state.isOpened()) { 
       // If the session state is open: 
       // Show the authenticated fragment 
       showFragment(SELECTION, false); 
      } else if (state.isClosed()) { 
       // If the session state is closed: 
       // Show the login fragment 
       showFragment(SPLASH, false); 
      } 
     } 
    } 

    //@Override <--- here is where I commented out to remove error 
    protected void onResumeFragments() { 
     //super.onResumeFragments(); <--- here is where I commented out to remove error 
     Session session = Session.getActiveSession(); 

     if (session != null && session.isOpened()) { 
      // if the session is already open, 
      // try to show the selection fragment 
      showFragment(SELECTION, false); 
     } else { 
      // otherwise present the splash screen 
      // and ask the person to login. 
      showFragment(SPLASH, false); 
     } 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     isResumed = true; 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     isResumed = false; 
    } 

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

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

}  

請告訴如何正確地重寫方法並加載片段活動...謝謝:)

回答

2

我想這是因爲你試圖使用該庫的舊版本。如果你看看history,它只能在4.1.1上添加。

+0

謝謝,任何方式來通過它,然後呢? – tigerden

0

我已經從項目的lib中刪除了'android-support-v4.jar',因爲我遇到了JAR不匹配問題。加入該文件再次解決了我的問題.. :)