【问题标题】:Issue in facebook logoutfacebook注销中的问题
【发布时间】:2016-01-04 06:02:03
【问题描述】:

我用普通的 ID+密码和 Facebook 登录按钮制作了一个登录页面。我将 SharedPrefrerence 字符串保存为“选项”,值为 0 或 1,以识别用户是否以正常或 facebook 按钮登录。对于注销,我的布局在操作栏中有一个图标,单击该图标会打开另一个带有注销按钮的片段。问题是当用户通过 Facebook 按钮登录而不是转到具有注销按钮的片段时,只要单击图标(在操作栏中),用户就会注销。它不会使用注销按钮转到另一个片段。

Fragment with logout button

public class Prof_settings extends Fragment{
	
	private SQLiteHandler db;
	private SessionManager session;
	Button logout;
	public static final String PREFS_NAME = "MyApp_Settings";
	String option;
	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		
		View v = LayoutInflater.from(getActivity()).inflate(R.layout.prof_settings, null);
		
		
		// SqLite database handler
		db = new SQLiteHandler(getActivity().getApplicationContext());

		// session manager
		session = new SessionManager(getActivity().getApplicationContext());
		
		SharedPreferences settings = getActivity().getSharedPreferences(PREFS_NAME, getActivity().MODE_PRIVATE);
		option = settings.getString("option", "");

		if (!session.isLoggedIn()) {
			logoutUser();
		}
		
		logout = (Button)v.findViewById(R.id.logout);
		logout.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				logoutUser();
			}
		});
		
		
		
	    return v;
		
	}
	
	private void logoutUser() {
		
		if(option.equals("1")){ //for facebook login
			
			LoginManager.getInstance().logOut();
	        Intent login = new Intent(getActivity(), LoginActivity.class);
	        startActivity(login);
	        getActivity().finish();
			
		}else if(option.equals("0")){  // for normal login
			
		
			session.setLogin(false);

			db.deleteUsers();

			
			// Launching the login activity
			Intent intent = new Intent(getActivity(), LoginActivity.class);
			startActivity(intent);
			getActivity().finish();
		}
		
		
	}
	
	
	
	
	
	

}
First Layout Code

public class ProfileFrag extends Fragment{
	
	ImageView pic, grid, list, calender, map;
	LinearLayout LL_grid, LL_list;
	GridView GV;
	TextView profile_name;
	
	private SQLiteHandler db;
	private SessionManager session;
	
	String option, name;
	Bundle bundle;
	public static final String PREFS_NAME = "MyApp_Settings";

			 
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setHasOptionsMenu(true);
	}
	
	@Override
	   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		
		View v = LayoutInflater.from(getActivity()).inflate(R.layout.frag_profile, null);
		
		profile_name = (TextView)v.findViewById(R.id.profile_name);
		
		SharedPreferences settings = getActivity().getSharedPreferences(PREFS_NAME, getActivity().MODE_PRIVATE);
		option = settings.getString("option", "");
		
		if(option.equals("1")){
			
			name = settings.getString("name", "");
			
			profile_name.setText(name);
			
		}else if(option.equals("0")){
			
						// SqLite database handler
						db = new SQLiteHandler(getActivity().getApplicationContext());

						// session manager
						session = new SessionManager(getActivity().getApplicationContext());

						// Fetching user details from SQLite
						HashMap<String, String> user = db.getUserDetails();

						name = user.get("name");

						// Displaying the user details on the screen
						profile_name.setText(name);
		}
		
		
////////////////////////////////// Settings Icon Function Starts ////////////////////////////////////////////////////////////////////////////////	
	
	
	@Override
	public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
		inflater.inflate(R.menu.activity_main_actions, menu);
		super.onCreateOptionsMenu(menu,inflater);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		super.onOptionsItemSelected(item);
		switch (item.getItemId()) {
		
		case R.id.settings:
			Prof_settings newFragment = new Prof_settings();//global variable

			FragmentManager fragmentManager = getFragmentManager();
			        fragmentManager.popBackStack();
			        FragmentTransaction ft =fragmentManager.beginTransaction();
			ft.replace(R.id.fragment_place, newFragment,"Order");
			ft.commit();

		default:
			break;
		}
		
		return true;
		
	}
	
	
/////////////////////////////////////////////// Settings Icon Function Ends ////////////////////////////////////////////////////////////////////	
	

}

【问题讨论】:

    标签: android facebook


    【解决方案1】:

    我通过在 SharedPreference 选项条件中插入 isLoggedin() 方法解决了这个问题。

    if(option.equals("0")){
    			
    			if (!session.isLoggedIn()) {
    				logoutUser();
    			}
    			
    }

    【讨论】:

      猜你喜欢
      • 2014-05-25
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 2012-02-25
      相关资源
      最近更新 更多