0

I am creating this App where the user changes the Language, it takes place only after i restart the App, can i do something to avoid the restart part Your Help will be very much helpful

Here is the onCreate Method : Here is the onCreate Method :

protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_class_room);
                custom_relatives = findViewById(R.id.custom_relatives);
                custom_relatives.setBackgroundColor(Functions.getBackColor());
                recycler_view_bottom_teacher = findViewById(R.id.recycler_view_bottom_teacher);
                myTeacherModelLists = new ArrayList<>();
                model_tabs_teachers = new ArrayList<>();
                String[] edu_forum = {"Edu Forum", "ฟอรั่มการศึกษา", "শিক্ষা আলোচনা"};
                recyclerView = findViewById(R.id.recyclerView);
                // change_language();
                GridLayoutManager gridLayoutManager = new GridLayoutManager(getApplicationContext(), 3);
                recyclerView.setLayoutManager(gridLayoutManager);
    
                MyTeacherAdapter myTeacherAdapter = new MyTeacherAdapter(myTeacherModelLists, this);
                //change_language();
                if (EasyPreference.with(getApplicationContext(), PRE_KEY)
                          .getString(PRE_USER_LANGUAGE,PRE_LANGUAGE_ENGLISH).equalsIgnoreCase(PRE_LANGUAGE_ASSEMESS)) {
    
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_google_classroom, Constant.classroom[2]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_news_alerts, Constant.news[2]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_school_rank, Constant.announcement[2]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.school_diary, Constant.school_diary[2]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_absent_report, Constant.absent_report[2]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.examination, Constant.examination[2]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_events, Constant.events[2]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_resources, edu_forum[2]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.edu_forum_finals, Constant.edu_forum[2]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.sets, Constant.settings[2]));
                    myTeacherAdapter.notifyDataSetChanged();
    
    
                } else if (EasyPreference.with(getApplicationContext(), PRE_KEY)
                        .getString(PRE_USER_LANGUAGE, PRE_LANGUAGE_ENGLISH).equalsIgnoreCase(PRE_LANGUAGE_THI)) {
    
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_google_classroom, Constant.classroom[1]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_news_alerts, Constant.news[1]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_school_rank, Constant.announcement[1]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.school_diary, Constant.school_diary[1]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_absent_report, Constant.absent_report[1]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.examination, Constant.examination[1]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_events, Constant.events[1]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_resources, edu_forum[1]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.edu_forum_finals, Constant.edu_forum[1]));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.sets, Constant.settings[1]));
                    myTeacherAdapter.notifyDataSetChanged();
    
    
                } else {
    
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_google_classroom, "Classroom"));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_news_alerts, "Notice"));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_school_rank, "Announcement"));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.school_diary, "School Diary"));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_absent_report, "Absent report"));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.examination, "Examination"));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_events, "Events"));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.home_resources, "Edu Forum"));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.edu_forum_finals, "Edu Bank"));
                    myTeacherModelLists.add(new MyTeacherModel(R.drawable.sets, "Settings"));
                    myTeacherAdapter.notifyDataSetChanged();
    
                }
    
                recyclerView.setAdapter(myTeacherAdapter);
                //adapter.notifyDataSetChanged();
    
    
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
                model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.classroomabhi));
                model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.schooldiaryabhi));
                model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.noticeabhi));
                model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.absentreportabhi));
                model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.examinationabhi));
                model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.eventsabhi));
                model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.edubankabhi));
                model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.edu_forum_latest_abhi));
                model_tabs_teachers.add(new Model_Tabs_Teacher(R.drawable.home));
                Adapter_Tabs_Teacher adapter_tabs_teacher = new Adapter_Tabs_Teacher(model_tabs_teachers, this);
                recycler_view_bottom_teacher.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true));
                recycler_view_bottom_teacher.setAdapter(adapter_tabs_teacher);
    
    
                imageSlider = (SliderLayout) findViewById(R.id.slider);
                EasyPreference.with(this, PRE_KEY).addInt("currentTab", 0).save();
                HashMap<String, Integer> url_maps = new HashMap<String, Integer>();
                url_maps.put("Latest News", R.drawable.zedabhi);
                url_maps.put("Click Here to Read More", R.drawable.newsmod);
    
                HashMap<String, Integer> file_maps = new HashMap<String, Integer>();
    
    
                for (String name : url_maps.keySet()) {
                    TextSliderView textSliderView = new TextSliderView(this);
                    // initialize a SliderLayout
                    textSliderView
                            .description(name)
                            .image(url_maps.get(name))
                            .setScaleType(BaseSliderView.ScaleType.Fit)
                            .setOnSliderClickListener(this);
    
                    //add your extra information
                    textSliderView.bundle(new Bundle());
                    textSliderView.getBundle()
                            .putString("extra", name);
    
                    imageSlider.addSlider(textSliderView);
                }
    
                String teacherName = EasyPreference.with(this, PRE_KEY).getString(PRE_USER_NAME, "");
                boolean shownWelcome = EasyPreference.with(this, PRE_KEY).getBoolean("shownWelcome", false);
    
    
                if (!shownWelcome) {
    
                    AlertDialog.Builder alert = new AlertDialog.Builder(this);
                    final AlertDialog alertDialog = alert.create();
                    alertDialog.setMessage(getString(R.string.app_hello) + " " + teacherName + "," + "\n" + getString(R.string.app_welcome) + " " + getString(R.string.app_name));
                        alertDialog.setMessage("Hello " + teacherName + "," + "\nWelcome to " + getString(R.string.app_name));
                    alertDialog.setCanceledOnTouchOutside(true);
                    alertDialog.show();
                    EasyPreference.with(this, PRE_KEY).addBoolean("shownWelcome", true).save();
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            alertDialog.dismiss();
                        }
                    }, 7000);
    
    
                }
    
                filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
                connectReciever = new ConnectivityReciever();
                registerReceiver(connectReciever, filter);
    
    
                pref = getApplicationContext().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
    
    
                imageView = findViewById(R.id.imageView);
    
    
                toolbarText = (TextView) findViewById(R.id.toolbarText);
                //  mViewPager = findViewById(R.id.viewpager);
                //    tabLayout = (TabLayout) findViewById(R.id.tab_layout);
                setTabAdapter();
    
    
                Animation animation = new AlphaAnimation(1, 0); //to change visibility from visible to invisible
                animation.setDuration(500); //1 second duration for each animation cycle
                animation.setInterpolator(new LinearInterpolator());
                animation.setRepeatCount(Animation.INFINITE); //repeating indefinitely
                animation.setRepeatMode(Animation.REVERSE); //animation will start from end point once ended.
                // image_breaking_news.startAnimation(animation); //to start animation
    
    
                String url_logo = EasyPreference.with(ClassRoomActivity.this, PRE_KEY).getString(MY_PREFS_SCHOOL_LOGO, "");
    
                //Demo purpose
    
                if (url_logo != null && (!url_logo.equalsIgnoreCase(""))) {
                    Picasso.with(ClassRoomActivity.this)
                            .load(url_logo)
                            .memoryPolicy(MemoryPolicy.NO_CACHE)
                            .error(R.drawable.sz_logo)
                            .placeholder(R.drawable.loading_back)
                            .into(imageView);
                } else {
                    Picasso.with(ClassRoomActivity.this)
                            .load(R.drawable.sz_logo)
                            .memoryPolicy(MemoryPolicy.NO_CACHE)
                            .error(R.drawable.sz_logo)
                            .placeholder(R.drawable.loading_back)
                            .into(imageView);
                }
    
    
            }

How can it be fixed so as to not do the Restart App process. Thank You

Community
  • 1
  • 1

2 Answers2

0

Use below code to change the language

if (context != null) {
            Resources res = context.getResources();
            DisplayMetrics dm = res.getDisplayMetrics();
            android.content.res.Configuration conf = res.getConfiguration();
            conf.setLocale(new Locale(language));
            res.updateConfiguration(conf, dm);
        }

It won't reflect immediately so to solve this issue just open your default or launcher activity it should reflect.

Harsh Shah
  • 2,162
  • 2
  • 19
  • 39
0

I think diffUtils can help you out in this regard, Just have a look at Diff Utils

Awais Tariq
  • 334
  • 2
  • 9