Sqlite 为什么Bundle类在I';m在android中更改导航抽屉中的活动?

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,还有两个单独的用户名和用户电子邮件文本视图。因此,任何以用户身份在应用程序中注册的人,他们只能看到他们的个人信息,即用户名和电子邮件,这些信息将显示在文本视图中,如果我们当时以管理员身份登录,则会显示每个用户的所

所以,我正在用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:

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示例”);
所有菜单项。添加(侧菜单);
返回所有菜单项;
}
}