我正在android中开发一个应用程序,我有一个带有用户图标的工具栏。如果用户未登录,则图标为红色,并显示用户应首先登录的对话框。用户登录后,用户图标变为绿色,并打开主页片段。我正在使用的数据库是领域。任何人都可以帮助我。
public class MainActivity extends FragmentActivity{
private static String TAG = MainActivity.class.getSimpleName();
private Toolbar mToolbar;
private DrawerLayout mDrawer;
ImageView imglogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
ButterKnife.bind(this);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//setSupportActionBar(toolbar);
ImageView icon = (ImageView)findViewById(R.id.toolbar_logo);
icon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Toolbar icon selected", Toast.LENGTH_LONG).show();
}
});
ImageView imglogin = (ImageView) findViewById(R.id.imagelogin);
// Find our drawer view
mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, mDrawer, toolbar, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerClosed(View drawerView) {
// Code here will be triggered once the drawer closes as we dont want anything to happen so we leave this blank
super.onDrawerClosed(drawerView);
}
@Override
public void onDrawerOpened(View drawerView) {
// Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank
super.onDrawerOpened(drawerView);
}
};
//Setting the actionbarToggle to drawer layout
mDrawer.setDrawerListener(actionBarDrawerToggle);
//calling sync state is necessary or else your hamburger icon wont show up
actionBarDrawerToggle.syncState();
}
@OnClick({R.id.offers,R.id.chat,R.id.map,R.id.profile,R.id.settings,R.id.shops})
public void submit(View view){
switch (view.getId()){
case R.id.chat:
goToFragment(FragmentChat.class, view);
break;
case R.id.shops:
goToFragment(ShopsFragment.class, view);
break;
case R.id.map:
goToFragment(MapsFragment.class, view);
break;
case R.id.offers:
goToFragment(OffersFragment.class, view);
break;
case R.id.profile:
goToFragment(ProfileFragment.class, view);
break;
case R.id.settings:
goToFragment(SettingsFragment.class, view);
break;
}
mDrawer.closeDrawers();
}
public void goToFragment(Class fragmentClass, View view){
setTitle(view.getContentDescription());
Fragment fragment = null;
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.container_body, fragment).commit();
}
}
登录代码
public class LoginFragment extends Fragment {
private static final String TAG = "Login";
TextView textsignup;
TextView txtlogin;
EditText Editemail;
EditText EditPassword;
private Realm realm;
private MyRealmObject myRealmObject;
public LoginFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_login, container, false);
TextView textsignup = (TextView) view.findViewById(R.id.txtcreate);
TextView txtlogin = (TextView) view.findViewById(R.id.txtlogin);
Editemail = (EditText) view.findViewById(R.id.edtemail);
EditPassword = (EditText) view.findViewById(R.id.edtpswrd);
textsignup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stubrelativeregister
getFragmentManager()
.beginTransaction()
.replace(R.id.relativelogin, new RegisterFragment())
.commit();
}
});
try {
realm = Realm.getInstance(getActivity());
} catch (Exception e) {
e.printStackTrace();
}
txtlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Editemail.length() == 0) {
showSnackBar("Enter Email");
Editemail.requestFocus();
} else if (EditPassword.length() == 0) {
showSnackBar("Enter Password");
EditPassword.requestFocus();
} else {
try {
realm.beginTransaction();
myRealmObject = realm.createObject(MyRealmObject.class);
myRealmObject.setEmail(Editemail.getText().toString());
myRealmObject.setPassword(EditPassword.getText().toString());
realm.commitTransaction();
showSnackBar("Incorrect Username or Password");
Editemail.requestFocus();
} catch (RealmPrimaryKeyConstraintException e) {
e.printStackTrace();
showSnackBar("Successful login");
}
}
}
});
return view;
}
private void showSnackBar(String msg) {
try {
Snackbar.make(getActivity().findViewById(R.id.relativelogin), msg, Snackbar.LENGTH_SHORT).show();
} catch (NullPointerException e) {
e.printStackTrace();
Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show();
}
}
private boolean checkUser(String Email, String Password) {
RealmResults<MyRealmObject> realmObjects = realm.where(MyRealmObject.class).findAll();
for (MyRealmObject myRealmObject : realmObjects) {
if (Email.equals(myRealmObject.getEmail()) && Password.equals(myRealmObject.getPassword())) {
showSnackBar("Successful new login");
return true;
}
}
Log.e(TAG, String.valueOf(realm.where(MyRealmObject.class).contains("Email", Email)));
return false;
}
}
提前致谢。 :)