Sqlite 为什么Bundle类在I';m在android中更改导航抽屉中的活动?
所以,我正在用SQLite在android上做一个项目。我有两种登录方式。一个是管理员登录,另一个是用户登录。我在那里总共有四个活动:登录活动、注册活动、DasboardActivity和MainListViewActivity。在Dashboard活动中,我有RecyclerView,还有两个单独的用户名和用户电子邮件文本视图。因此,任何以用户身份在应用程序中注册的人,他们只能看到他们的个人信息,即用户名和电子邮件,这些信息将显示在文本视图中,如果我们当时以管理员身份登录,则会显示每个用户的所有详细信息,并显示在recyclerview中。MainListView与SQLite或管理员用户登录都不相关。在这里,我只保留了一些虚拟数据抛出ArrayList,这些数据将显示在ListView中。主要目的是提供两种不同的活动,如DashBoardActivity(RecyclerView)和MainListViewActivity(listView),以便我可以通过导航抽屉轻松地在这两种活动之间切换。现在我面临的问题是,当我以管理员或用户身份登录时,数据会正确地显示在仪表板活动上。之后,当我通过导航抽屉导航到MainListViewActivity时,也会在ListView中正确显示虚拟数据*但是,当我再次导航回DashBoardActivity时,它显示Java.lang.NullPointerException,当我调试我的应用程序时,我发现通过Intent从我的登录活动获取仪表板活动中的值的Bundle类正在变为null 如何解决此问题 代码如下: LoginActivity.java:Sqlite 为什么Bundle类在I';m在android中更改导航抽屉中的活动?,sqlite,android-studio,listview,android-recyclerview,navigation-drawer,Sqlite,Android Studio,Listview,Android Recyclerview,Navigation Drawer,所以,我正在用SQLite在android上做一个项目。我有两种登录方式。一个是管理员登录,另一个是用户登录。我在那里总共有四个活动:登录活动、注册活动、DasboardActivity和MainListViewActivity。在Dashboard活动中,我有RecyclerView,还有两个单独的用户名和用户电子邮件文本视图。因此,任何以用户身份在应用程序中注册的人,他们只能看到他们的个人信息,即用户名和电子邮件,这些信息将显示在文本视图中,如果我们当时以管理员身份登录,则会显示每个用户的所
package com.example.recyclerexample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LoginActivity extends AppCompatActivity {
EditText edt_email,edt_pass;
Button btn_submit,btn_reg;
SharedPreferences sharedPreferences;
DatabaseHelping databaseHelping;
private String admin_email = "admin";
private String admin_pass = "password";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
edt_email=findViewById(R.id.edt_email);
edt_pass=findViewById(R.id.edt_pass);
btn_submit=findViewById(R.id.btn_submit);
btn_reg=findViewById(R.id.btn_reg);
sharedPreferences = getSharedPreferences("userDetails", Context.MODE_PRIVATE);
databaseHelping = new DatabaseHelping(this);
btn_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean login_Verify = databaseHelping.loginUser(edt_email.getText().toString().trim(),
edt_pass.getText().toString().trim());
//Admin
if(edt_email.getText().toString().trim().equals(admin_email) && edt_pass.getText().toString().trim().equals(admin_pass)){
Toast.makeText(LoginActivity.this,"Login admin Successful", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LoginActivity.this,DashboardActivity.class);
intent.putExtra("user_type","admin");
startActivity(intent);
finish();
}
//User
else if(login_Verify){
RegisterUserModel userModel =databaseHelping.getUserDetails(edt_email.getText().toString().trim());
Toast.makeText(LoginActivity.this,"Login user Successful", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LoginActivity.this,DashboardActivity.class);
intent.putExtra("user_type","user");
intent.putExtra("user_name",sharedPreferences.getString("name",""));
intent.putExtra("userData",userModel);
startActivity(intent);
finish();
}
//Login Failed
else{
Toast.makeText(LoginActivity.this,"Login failed", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LoginActivity.this,RegistrationActivity.class);
startActivity(intent);
finish();
}
}
});
btn_reg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(LoginActivity.this,RegistrationActivity.class);
startActivity(intent);
finish();
}
});
}
}
package com.example.recyclerexample.nav_control;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.recyclerexample.R;
import java.util.ArrayList;
public class NavAdapter extends BaseAdapter {
ArrayList<NavModel> arrayList=new ArrayList<>();
Context context;
public NavAdapter(ArrayList<NavModel> al_menus, Context context) {
this.arrayList = al_menus;
this.context = context;
}
private class ViewHolder {
TextView txt_name;
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
ViewHolder holder;
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (view == null) {
holder=new ViewHolder();
view = inflater.inflate(R.layout.row_item_slider, null);
holder.txt_name=view.findViewById(R.id.txt_name);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.txt_name.setText(arrayList.get(position).getName());
return view;
}
}
package com.example.recyclerexample.nav_control;
public class NavModel {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.example.recyclerexample.nav_control;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import com.example.recyclerexample.DashboardActivity;
import com.example.recyclerexample.MainListViewActivity;
import java.util.ArrayList;
public class Navigation_Control {
static Context con;
Activity a;
public Navigation_Control(Context con, Activity a)
{
this.con=con;
this.a=a;
}
public void openActivity(String name)
{
if(name.equalsIgnoreCase("ListViewExample"))
{
if(!(con instanceof MainListViewActivity))
{
Intent intent =new Intent(con,MainListViewActivity.class);
con.startActivity(intent);
}
}
else if(name.equalsIgnoreCase("RecyclerViewExample"))
{
if(!(con instanceof DashboardActivity))
{
Intent intent =new Intent(con,DashboardActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
con.startActivity(intent);
//a.overridePendingTransition(android.R.anim.slide_out_right, android.R.anim.slide_in_left);
if(!(con instanceof MainListViewActivity))
a.finish();
}
}
}
public static ArrayList<NavModel> prepareSideMenu(Activity act)
{
ArrayList<NavModel> al_menu_item;
NavModel side_menu=new NavModel();
al_menu_item=new ArrayList<>();
side_menu=new NavModel();
side_menu.setName("ListViewExample");
al_menu_item.add(side_menu);
side_menu=new NavModel();
side_menu.setName("RecyclerViewExample");
al_menu_item.add(side_menu);
return al_menu_item;
}
}
RegistrationActivity.java
package com.example.recyclerexample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class RegistrationActivity extends AppCompatActivity {
EditText edt_email,edt_pass,edt_name;
Button btn_submit;
TextView txt_header;
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
DatabaseHelping databaseHelping;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration);
edt_email=findViewById(R.id.edt_email);
edt_pass=findViewById(R.id.edt_pass);
edt_name=findViewById(R.id.edt_name);
txt_header=findViewById(R.id.txt_header);
btn_submit=findViewById(R.id.btn_submit);
txt_header.setText("Registration");
sharedPreferences = getSharedPreferences("userDetails", Context.MODE_PRIVATE);
editor=sharedPreferences.edit();
databaseHelping = new DatabaseHelping(this);
btn_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editor.putInt("user_id",1);
editor.putString("name",edt_name.getText().toString().trim());
editor.putString("email",edt_email.getText().toString().trim());
editor.putString("password",edt_pass.getText().toString().trim());
editor.commit(); //apply()
RegisterUserModel model = new RegisterUserModel();
model.setName(edt_name.getText().toString().trim());
model.setEmail(edt_email.getText().toString().trim());
model.setPassword(edt_pass.getText().toString().trim());
databaseHelping.registerUser(model);
Intent intent = new Intent(RegistrationActivity.this,LoginActivity.class);
startActivity(intent);
finish();
}
});
}
}
package com.example.recyclerexample;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.example.recyclerexample.nav_control.NavAdapter;
import com.example.recyclerexample.nav_control.NavModel;
import com.example.recyclerexample.nav_control.Navigation_Control;
import com.google.android.material.navigation.NavigationView;
import java.util.ArrayList;
public class MainListViewActivity extends AppCompatActivity {
ListView list_item;
ArrayList<UserModel> arrayList;
CustomAdapter customAdapter;
TextView txt_header;
//Navigation Drawer Deceleration
ImageView img_nav;
DrawerLayout drawer_layout;
ListView menu_list;
ArrayList<NavModel> navList;
NavAdapter side_menu;
NavigationView nav_view;
//Navigation Drawer Deceleration
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_list_view);
list_item=findViewById(R.id.list_item);
txt_header = findViewById(R.id.txt_header);
txt_header.setText("ListView");
arrayList = new ArrayList<>();
//Navigation Drawer Initialization and configuration
initNavFiels();
prepareSideMenu();
arrayList.add(new UserModel("Debjit","7485961245",R.mipmap.ic_launcher)); //0
arrayList.add(new UserModel("Djit","7485961245",R.mipmap.ic_launcher));//1 ...
arrayList.add(new UserModel("Dejit","7485961245",R.mipmap.ic_launcher));
arrayList.add(new UserModel("Deit","7485961245",R.mipmap.ic_launcher));
arrayList.add(new UserModel("Debji","7485961245",R.mipmap.ic_launcher));
arrayList.add(new UserModel("Debt","7485961245",R.mipmap.ic_launcher));
arrayList.add(new UserModel("jit","7485961245",R.mipmap.ic_launcher));
arrayList.add(new UserModel("Dggebjit","7485961245",R.mipmap.ic_launcher));
arrayList.add(new UserModel("Deblljit","7485961245",R.mipmap.ic_launcher));
arrayList.add(new UserModel("Debxt","7485961245",R.mipmap.ic_launcher));
arrayList.add(new UserModel("Deict","7485961245",R.mipmap.ic_launcher));
customAdapter = new CustomAdapter(arrayList, MainListViewActivity.this);
list_item.setAdapter(customAdapter);
list_item.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainListViewActivity.this,DetailsActivity.class);
intent.putExtra("user_name",arrayList.get(position).getName());
intent.putExtra("user_phone",arrayList.get(position).getPhone());
intent.putExtra("user_img",arrayList.get(position).getImg());
startActivity(intent);
}
});
}
private void prepareSideMenu() {
menu_list=findViewById(R.id.menu_list);
drawer_layout = findViewById(R.id.drawer_layout);
nav_view =findViewById(R.id.nav_view);
navList= Navigation_Control.prepareSideMenu(this);
side_menu = new NavAdapter(navList,this);
menu_list.setAdapter(side_menu);
menu_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
drawer_layout.closeDrawer(GravityCompat.START);
}
new Navigation_Control(MainListViewActivity.this,MainListViewActivity.this).openActivity(navList.get(position).getName());
}
});
}
private void initNavFiels() {
img_nav=findViewById(R.id.img_nav);
//img_nav.setOnClickListener(this);
img_nav.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
drawer_layout.closeDrawer(GravityCompat.START);
}
else
drawer_layout.openDrawer(GravityCompat.START);
}
});
}
@Override
public void onBackPressed() {
DrawerLayout drawer_layout =findViewById(R.id.drawer_layout);
if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
drawer_layout.closeDrawer(GravityCompat.START);
}else {
super.onBackPressed();
}
}
}
DashBoardActivity.java(recyclerview和两个文本视图)
3。导航控制。java:
package com.example.recyclerexample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LoginActivity extends AppCompatActivity {
EditText edt_email,edt_pass;
Button btn_submit,btn_reg;
SharedPreferences sharedPreferences;
DatabaseHelping databaseHelping;
private String admin_email = "admin";
private String admin_pass = "password";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
edt_email=findViewById(R.id.edt_email);
edt_pass=findViewById(R.id.edt_pass);
btn_submit=findViewById(R.id.btn_submit);
btn_reg=findViewById(R.id.btn_reg);
sharedPreferences = getSharedPreferences("userDetails", Context.MODE_PRIVATE);
databaseHelping = new DatabaseHelping(this);
btn_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean login_Verify = databaseHelping.loginUser(edt_email.getText().toString().trim(),
edt_pass.getText().toString().trim());
//Admin
if(edt_email.getText().toString().trim().equals(admin_email) && edt_pass.getText().toString().trim().equals(admin_pass)){
Toast.makeText(LoginActivity.this,"Login admin Successful", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LoginActivity.this,DashboardActivity.class);
intent.putExtra("user_type","admin");
startActivity(intent);
finish();
}
//User
else if(login_Verify){
RegisterUserModel userModel =databaseHelping.getUserDetails(edt_email.getText().toString().trim());
Toast.makeText(LoginActivity.this,"Login user Successful", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LoginActivity.this,DashboardActivity.class);
intent.putExtra("user_type","user");
intent.putExtra("user_name",sharedPreferences.getString("name",""));
intent.putExtra("userData",userModel);
startActivity(intent);
finish();
}
//Login Failed
else{
Toast.makeText(LoginActivity.this,"Login failed", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LoginActivity.this,RegistrationActivity.class);
startActivity(intent);
finish();
}
}
});
btn_reg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(LoginActivity.this,RegistrationActivity.class);
startActivity(intent);
finish();
}
});
}
}
package com.example.recyclerexample.nav_control;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.recyclerexample.R;
import java.util.ArrayList;
public class NavAdapter extends BaseAdapter {
ArrayList<NavModel> arrayList=new ArrayList<>();
Context context;
public NavAdapter(ArrayList<NavModel> al_menus, Context context) {
this.arrayList = al_menus;
this.context = context;
}
private class ViewHolder {
TextView txt_name;
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
ViewHolder holder;
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (view == null) {
holder=new ViewHolder();
view = inflater.inflate(R.layout.row_item_slider, null);
holder.txt_name=view.findViewById(R.id.txt_name);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.txt_name.setText(arrayList.get(position).getName());
return view;
}
}
package com.example.recyclerexample.nav_control;
public class NavModel {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.example.recyclerexample.nav_control;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import com.example.recyclerexample.DashboardActivity;
import com.example.recyclerexample.MainListViewActivity;
import java.util.ArrayList;
public class Navigation_Control {
static Context con;
Activity a;
public Navigation_Control(Context con, Activity a)
{
this.con=con;
this.a=a;
}
public void openActivity(String name)
{
if(name.equalsIgnoreCase("ListViewExample"))
{
if(!(con instanceof MainListViewActivity))
{
Intent intent =new Intent(con,MainListViewActivity.class);
con.startActivity(intent);
}
}
else if(name.equalsIgnoreCase("RecyclerViewExample"))
{
if(!(con instanceof DashboardActivity))
{
Intent intent =new Intent(con,DashboardActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
con.startActivity(intent);
//a.overridePendingTransition(android.R.anim.slide_out_right, android.R.anim.slide_in_left);
if(!(con instanceof MainListViewActivity))
a.finish();
}
}
}
public static ArrayList<NavModel> prepareSideMenu(Activity act)
{
ArrayList<NavModel> al_menu_item;
NavModel side_menu=new NavModel();
al_menu_item=new ArrayList<>();
side_menu=new NavModel();
side_menu.setName("ListViewExample");
al_menu_item.add(side_menu);
side_menu=new NavModel();
side_menu.setName("RecyclerViewExample");
al_menu_item.add(side_menu);
return al_menu_item;
}
}
package com.example.recyclerexample.nav_控件;
导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入com.example.recyclerexample.dashboard活动;
导入com.example.recyclerexample.MainListViewActivity;
导入java.util.ArrayList;
公共类导航控制{
静态语境;
活动a;
公共导航控制(上下文控制,活动a)
{
这个.con=con;
这个a=a;
}
公共void openActivity(字符串名称)
{
if(name.equalsIgnoreCase(“ListViewExample”))
{
如果(!(MainListViewActivity的con实例))
{
意向意向=新意向(con,MainListViewActivity.class);
反恐怖主义(意图);
}
}
else if(name.equalsIgnoreCase(“RecycleServiceExample”))
{
如果(!(仪表板活动的con实例))
{
意向意向=新意向(con,DashboardActivity.class);
intent.addFlags(intent.FLAG\u ACTIVITY\u CLEAR\u TOP);
反恐怖主义(意图);
//a、 重写结束转换(android.R.anim.slide\u out\u right,android.R.anim.slide\u in\u left);
如果(!(MainListViewActivity的con实例))
a、 完成();
}
}
}
公共静态阵列列表准备目录(活动法)
{
ArrayList al_菜单项;
NavModel side_菜单=新的NavModel();
al_菜单_项=新建ArrayList();
侧菜单=新导航模型();
side_menu.setName(“ListViewExample”);
所有菜单项。添加(侧菜单);
侧菜单=新导航模型();
side_menu.setName(“RecycleriveWeb示例”);
所有菜单项。添加(侧菜单);
返回所有菜单项;
}
}