2014-10-16 30 views
1

我正在开发Android Facebook登录并遇到问题。这是我的MainFragment类:LoginButton中的setFragment无法应用于MainFragment

 public class MainFragment extends Fragment { 

    private static final String TAG = "MainFragment"; 

    private UiLifecycleHelper uiHelper; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     uiHelper = new UiLifecycleHelper(getActivity(), callback); 
     uiHelper.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.main, container, false); 

     LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton); 
     authButton.setFragment(this); 

     return view; 
    } 


    private void onSessionStateChange(Session session, SessionState state, Exception exception) { 
     if (state.isOpened()) { 
      Log.i(TAG, "Logged in..."); 
     } else if (state.isClosed()) { 
      Log.i(TAG, "Logged out..."); 
     } 
    } 

    private Session.StatusCallback callback = new Session.StatusCallback() { 
     @Override 
     public void call(Session session, SessionState state, Exception exception) { 
      onSessionStateChange(session, state, exception); 
     } 
    }; 

    @Override 
    public void onResume() { 
     super.onResume(); 
     uiHelper.onResume(); 
    } 

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

    @Override 
    public void onPause() { 
     super.onPause(); 
     uiHelper.onPause(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     uiHelper.onDestroy(); 
    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     uiHelper.onSaveInstanceState(outState); 
    } 
} 

这是我的MainActivity类别:

public class MainActivity extends FragmentActivity { 


    private MainFragment mainFragment; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 

} 

    public void startFacebookSession(View v) { 
     Session.openActiveSession(this, true, new Session.StatusCallback() { 

      // callback when session changes state 
      @Override 
      public void call(Session session, SessionState state, Exception exception) { 
       if (session.isOpened()) { 

        Request.newMeRequest(session, new Request.GraphUserCallback() { 

         // callback after Graph API response with user object 
         @Override 
         public void onCompleted(GraphUser user, Response response) { 
          if (user != null) { 
           TextView welcome = (TextView) findViewById(R.id.LoginText); 
           welcome.setText("Hello " + user.getName() + "!"); 
          } 
          else { 
           TextView view = (TextView) findViewById(R.id.LoginText); 
           view.setText("User logged out"); 
          } 
         } 
        }).executeAsync(); 
       } 
      } 
     }); 
    } 
    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
    } 
} 

我经常收到关于 '(本)' 的错误。错误说:在LoginButton

setFragment不能适用于(com.example.app.MainFragment)*

回答

4

有2个clases命名的片段。正常的片段和v4片段。

差异在进口:

import android.support.v4.app.Fragment; 
import android.app.Fragment; 

Im相当肯定,问题是setFragment方法需要的这一个,和你的MainFragment从另一个延伸。

+0

不会做的伎俩:( – DevelopingBeaver 2014-10-16 14:56:35

+0

把你的整个MainFragment代码,看看有什么不对 – jonyjm 2014-10-16 15:00:38

+0

加入MainActivty和MainFragment类 – DevelopingBeaver 2014-10-20 07:08:14

相关问题