当用户登录时,我正在创建一个android payroll应用程序,该应用程序应在导航屏幕上显示其详细信息。并且,当新用户登录后,它应该会自动更改详细信息,我该怎么做,请帮帮我。
我知道我曾经问过这个问题,但是当我举个例子
Login.xml
<android.support.v7.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.AppCompatImageView
android:layout_width="300dp"
android:layout_height="200dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="40dp"
android:src="@drawable/civilsoft" />
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayoutName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:errorEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/editTextName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="User Name"
android:inputType="textEmailAddress"
android:textColor="@android:color/white"
/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayoutPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:errorEnabled="true"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/colorAccent">
<android.support.design.widget.TextInputEditText
android:id="@+id/editTextPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword"
android:textColor="@android:color/white"
/>
</android.support.design.widget.TextInputLayout>
<Button
android:id="@+id/buttonLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:background="@drawable/btn_rounded"
android:text="login"
android:textColor="@android:color/white" />
<TextView
android:id="@+id/textViewCreateAccount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginTop="16dp"
android:gravity="center_horizontal"
android:textColor="@android:color/white"
/>
</android.support.v7.widget.LinearLayoutCompat>
登录活动
//Declaration EditTexts
EditText editTextName;
EditText editTextPassword;
//Declaration TextInputLayout
TextInputLayout textInputLayoutName;
TextInputLayout textInputLayoutPassword;
//Declaration Button
Button buttonLogin;
//Declaration DatabaseHelper
DatabaseHelper DH;
private SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
DH = new DatabaseHelper(this);
initCreateAccountTextView();
initViews();
//set click event of login button
buttonLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Check user input is correct or not
if (validate()){
// Get values from edit text fields.
String Name = editTextName.getText().toString();
String Password = editTextPassword.getText().toString();
// Authenticate User
User currentUser = DH.Authenticate(new User(null, null, Name, Password));
//Check Authentication is successful or not
if (currentUser != null) {
//Snackbar.make(buttonLogin, "Login Successful!", Snackbar.LENGTH_LONG).show();
//User Logged in successfully Launch You home screen activity
Intent intent = new Intent (Login.this,Navigation.class);
intent.putExtra("EmpID", Employee.getEmpID());
intent.putExtra("EmpCode", Employee.getEmpCode());
intent.putExtra("EmpName", Employee.getEmpName());
startActivity(intent);
finish();
} else {
// User Logged in failed.
Snackbar.make(buttonLogin, "Login Failed, please try again!", Snackbar.LENGTH_LONG).show();
}
}
}
// This method is used to validate input given by user
private boolean validate() {
boolean valid = false;
// Get values from editText fields
String Name = editTextName.getText().toString();
String Password = editTextPassword.getText().toString();
// Handling validation for User Name field.
if(Name.isEmpty()){
valid = false;
textInputLayoutName.setError("Please enter valid User Name!");
} else {
valid = true;
textInputLayoutName.setError(null);
}
// Handling validation for Password field.
if(Password.isEmpty()) {
valid = false;
textInputLayoutPassword.setError("Please enter valid Password!");
} else {
textInputLayoutPassword.setError(null);
}
return valid;
}
});
}
// This method is used to connect XML views to its objects
private void initViews() {
editTextName = (EditText) findViewById(R.id.editTextName);
editTextPassword = (EditText)
findViewById(R.id.editTextPassword);
textInputLayoutName = (TextInputLayout)
findViewById(R.id.textInputLayoutName);
textInputLayoutPassword = (TextInputLayout)
findViewById(R.id.textInputLayoutPassword);
TextView textView = (TextView)findViewById(R.id.EmpID);
TextView textView1 = (TextView)findViewById(R.id.EmpCode);
TextView textView2 = (TextView)findViewById(R.id.EmpName);
buttonLogin = (Button) findViewById(R.id.buttonLogin);
}
// This method is for handling fromHTML method depreciation.
@SuppressWarnings("deprecation")
public static Spanned fromHtml(String html) {
Spanned result;
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.N) {
result = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY);
} else {
result = Html.fromHtml(html);
}
return result;
}
// This method used to set Create account TextView text and click event
(multiple colors
// for TextView yet not supported in XML so I have done it
programmatically)
private void initCreateAccountTextView() {
TextView textViewCreateAccount = (TextView)
findViewById(R.id.textViewCreateAccount);
textViewCreateAccount.setText(fromHtml("<font color='#ffffff'>I don't
have account yet. </font><font color='#0c0099'>create one</font>"));
textViewCreateAccount.setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Login.this, Register.class);
startActivity(intent);
}
});
}
}
Content_Navigation.xml
<LinearLayout
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/EmpID"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/EmpId"
android:textAlignment="center"
android:textColor="@color/colorAccent"
android:textSize="25dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/EmpCode"
android:textAlignment="center"
android:text="@string/EmpCode"
android:textSize="25dp"
android:textColor="@color/colorAccent"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/EmpName"
android:textAlignment="center"
android:text="@string/EmpCode"
android:textSize="25dp"
android:textColor="@color/colorAccent"
/>
</LinearLayout>
导航活动
//Declaration Textview;
TextView EmpID, EmpCode, EmpName;
// EmployeeHelper db;
EmployeeHelper mydb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navigation);
mydb = new EmployeeHelper(this);
mydb.insertData("112", "002", "xxx");
mydb.getAllData();
TextView textView = (TextView)findViewById(R.id.EmpID);
TextView textView1 = (TextView)findViewById(R.id.EmpCode);
TextView textView2 = (TextView)findViewById(R.id.EmpName);
String EmpID = getIntent().getStringExtra("EmpID");
String EmpCode = getIntent().getStringExtra("EmpCode");
String EmpName = getIntent().getStringExtra("EmpName");
textView.setText("EmpID - 112");
textView1.setText("EmpCode - 002");
textView2.setText("EmpName - xxx");
textView.setText("EmpID - 111");
textView1.setText("EmpCode - 001");
textView2.setText("EmpName - bbb");
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton)
findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action",
Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
DrawerLayout drawer = (DrawerLayout)
findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open,
R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView)
findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout)
findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
present.
getMenuInflater().inflate(R.menu.navigation, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_camera) {
// Handle the intent code to navigate from one page to another.
startActivity( new Intent(Navigation.this, LeaveTran.class));
} else if (id == R.id.nav_gallery) {
startActivity( new Intent(Navigation.this,
PersonalProfile.class));
} else if (id == R.id.nav_home) {
// Handle the intent code to navigate from one page to another.
startActivity( new Intent(Navigation.this, Home.class));
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
数据库助手
public class EmployeeHelper extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 3;
public static final String DATABASE_NAME = "my_database.db2";
public static final String TABLE_NAME = "Employee";
public static final String KEY_EmpID = "EmpID";
public static final String KEY_EmpCode = "EmpCode";
public static final String KEY_EmpName = "EmpName";
//SQL for creating users table
public static final String SQL_TABLE_NAME = " CREATE TABLE " +
TABLE_NAME
+ " ( "
+ KEY_EmpID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_EmpCode + " TEXT, "
+ KEY_EmpName + " TEXT"
+ " ) ";
public EmployeeHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_TABLE_NAME);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
db.execSQL(" DROP TABLE IF EXISTS " + TABLE_NAME);
}
public boolean insertData(String EmpID, String EmpCode, String
EmpName)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(KEY_EmpID, EmpID);
contentValues.put(KEY_EmpCode, EmpCode);
contentValues.put(KEY_EmpName, EmpName);
long result = db.insert(TABLE_NAME, null, contentValues); //
error here
// If data is inserted incorrectly it will return -1
if (result == -1) {
return false;
} else {
return true;
}
}
public List<String> getAllCategory() {
List<String> AllCategoryList = new ArrayList<String>();
String selectQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
/*db = SQLiteDatabase.openDatabase(DATABASE_NAME,
Context.MODE_PRIVATE, null);
Cursor allrows = db.rawQuery("SELECT * FROM " + TABLE_Categ_NAME,
null);
System.out.println("COUNT : " + allrows.getCount());*/
if (cursor.moveToFirst()) {
do {
String EmpID = cursor.getString(0);
String EmpCode = cursor.getString(1);
String EmpName = cursor.getString(2);
AllCategoryList.add(EmpID);
AllCategoryList.add(EmpCode);
AllCategoryList.add(EmpName);
} while (cursor.moveToNext());
}
cursor.close();
db.close();
return AllCategoryList;
}
public Cursor getAllData() {
SQLiteDatabase db = this.getReadableDatabase();
String buildSQL = "SELECT * FROM " + TABLE_NAME;
Log.d(TAG, "getAllData SQL: " + buildSQL);
return db.rawQuery(buildSQL, null);
}
}
员工阶层
public class Employee {
public static String EmpID;
public static String EmpCode;
public static String EmpName;
public Employee (String EmpID, String EmpCode, String EmpName)
{
this.EmpID = EmpID;
this.EmpCode = EmpCode;
this.EmpName = EmpName;
}
public static String getEmpID() {
return EmpID;
}
public static String getEmpCode() {
return EmpCode;
}
public static String getEmpName() {
return EmpName;
}
public static void setEmpID(String empID) {
EmpID = empID;
}
public static void setEmpCode(String empCode) {
EmpCode = empCode;
}
public static void setEmpName(String empName) {
EmpName = empName;
}
显示方式:
答案 0 :(得分:0)
像这样创建一个Global PrefManager类,并创建三个字段来设置数据
public class PrefManager {
// Shared preferences file name
public static final String PREF_NAME = "PACKAGE_NAME" + "_Preferences";
private static final String KEY_EMPID = "Emp_ID";
private static final String KEY_EMPCODE = "Emp_Code";
private static final String KEY_EMP_NAME = "Emp_Name";
SharedPreferences pref;
// Editor for Shared preferences
Editor editor;
// Context
Context _context;
// Shared pref mode
int PRIVATE_MODE = 0;
public PrefManager(Context context) {
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
public String getEmpID() {
return pref.getString(KEY_EMPID, null);
}
public void setEmpID(String token) {
editor.putString(KEY_EMPID, token);
editor.commit();
}
public String getEmpCode() {
return pref.getString(KEY_EMPCODE, null);
}
public void setEmpCode(String token) {
editor.putString(KEY_EMPCODE, token);
editor.commit();
}
public String getEmpName() {
return pref.getString(KEY_EMP_NAME, null);
}
public void setEmpName(String token) {
editor.putString(KEY_EMP_NAME, token);
editor.commit();
}
}
登录活动呼叫意图时间将数据设置为共享的首选项,您还可以在注册时间保存数据
public class LoginActivity{
PrefManager pref;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
// inilize pref manager class
pref = new PrefManager(this);
}
if (currentUser != null) {
//Snackbar.make(buttonLogin, "Login Successful!", Snackbar.LENGTH_LONG).show();
//User Logged in successfully Launch You home screen activity
Intent intent = new Intent (Login.this,Navigation.class);
pref.setEmpID(//passyour employee id);
startActivity(intent);
finish();
}
在导航中,活动从共享的首选项中获取数据并存储到字符串并设置为抽屉式文本视图
public class navigationActivity()
***PrefManager pref;***
String EmpId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navigation);
***pref = new PrefManager(this);***
EmpId = pref.getEmpID;
}
// OnnavigationDrawer header
textView.setText("EmpID:"+EmpId);