Как вернуться к выбранному языку Activity, когда я нажимаю кнопку выхода? - PullRequest
0 голосов
/ 05 ноября 2019

мне нужна помощь. Мой манифест Launcher Activity is LanguageChooseActivity.java, я использовал общие настройки, когда пользователь выбрал язык, он закрывает LanguageChooseActivity и входит в mainActivity сразу после запуска приложения, но в основной Activity у меня есть кнопка выхода, а когда пользователь нажимает кнопку выходаКнопка он должен вернуться к LanguageChooseActivity, чтобы снова выбрать язык. Пожалуйста, помогите сделать это.

вот мой код: LanguageChooseActivity

 private TextView rusVersion;
 private TextView engVersion;
 private SharedPreferences sharedPreferences;
 private SharedPreferences.Editor editor;
 private boolean launchedEng;
 private boolean launchedRus;


 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_language_choose);




         afterChoseLanguage();




     rusVersion = findViewById(R.id.rus_version);
     rusVersion.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             if(rusVersion.isPressed()){
                 editor = sharedPreferences.edit();
                 editor.putBoolean("launchedRus", true);
                 editor.apply();

             }
             startActivity(new Intent(LanguageChooseActivity.this,RusMainMenuActivity.class));

         }
     });

     engVersion = findViewById(R.id.eng_version);
     engVersion.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            if(engVersion.isPressed()){
                editor = sharedPreferences.edit();
                editor.putBoolean("launchedEng", true);
                editor.apply();

         }
             startActivity(new Intent(LanguageChooseActivity.this,EngMainMenuActivity.class));

         }
     });

 }

 public void afterChoseLanguage(){
     sharedPreferences = getPreferences(Context.MODE_PRIVATE);
     launchedEng = sharedPreferences.getBoolean("launchedEng",false);
     launchedRus = sharedPreferences.getBoolean("launchedRus",false);
     if(launchedEng){
         Intent intent = new Intent(this, EngMainMenuActivity.class);
         startActivity(intent);
     } else if (launchedRus){
         Intent intent = new Intent(this, RusMainMenuActivity.class);
         startActivity(intent);
     }
 }
} ```

and MainMenuActivity:

 ``` FrameLayout layout;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);

     DisplayMetrics dm = getResources().getDisplayMetrics();
     MainActivity.scale =(float) dm.widthPixels / 1080f;
     MainActivity.dm = dm;

     requestWindowFeature(Window.FEATURE_NO_TITLE);
     this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,         WindowManager.LayoutParams.FLAG_FULLSCREEN);

     layout = new FrameLayout(this);
     layout.setBackgroundColor(ResourceColors.colorWhite);
     setContentView(layout);

     design();

 }

 private void design(){

     Bitmap logoMain = getBitmapFromAsset(this,"logo_Main.png");
     logoMain = Bitmap.createScaledBitmap(logoMain,(int)(480*MainActivity.scale),(int)(158*MainActivity.scale), false);
     ImageView iLogoMain = new ImageView(this);
     iLogoMain.setImageBitmap(logoMain);
     iLogoMain.setLayoutParams(new FrameLayout.LayoutParams((int)(480*MainActivity.scale),(int)(158*MainActivity.scale)));
     iLogoMain.setX(MainActivity.dm.widthPixels/2 - logoMain.getWidth()/2);
     iLogoMain.setY(80*MainActivity.scale);

     layout.addView(iLogoMain);

     for (int i = 0; i < 20; i++) {
         Bitmap iconRus = getBitmapFromAsset(this, "iconMainMenu/ru_" + (i + 1) + ".png");
         iconRus = Bitmap.createScaledBitmap(iconRus, (int) (238 * MainActivity.scale), (int) (238 * MainActivity.scale*(iconRus.getHeight()/(float)iconRus.getWidth())), false);
         ImageView iIcon = new ImageView(this);
         iIcon.setLayoutParams(new FrameLayout.LayoutParams(iconRus.getWidth(), iconRus.getHeight()));
         iIcon.setImageBitmap(iconRus);
         iIcon.setX(55 * MainActivity.scale + (244 * (i % 4))* MainActivity.scale);
         iIcon.setY(390 * MainActivity.scale + (277 * (i / 4))* MainActivity.scale);
         iIcon.setId(100+i);


iIcon.setOnClickListener(new View.OnClickListener() {
             @SuppressLint("ResourceType")
             @Override
             public void onClick(View v) {

                 if (v.getId() == 119) {


                     }



             }
         });


         layout.addView(iIcon);
     }

 }

 public static Bitmap getBitmapFromAsset(Context context, String filePath) {
     AssetManager assetManager = context.getAssets();

     InputStream istr;
     Bitmap bitmap = null;
     try {
         istr = assetManager.open(filePath);
         bitmap = BitmapFactory.decodeStream(istr);
     } catch (IOException e) {
         // handle exception
     }

     return bitmap;
 }


}

1 Ответ

0 голосов
/ 05 ноября 2019

если я правильно понимаю вашу проблему, вы уже использовали ответ в своем коде ... в onClick есть метод для кнопки выхода, чтобы начать другое действие.

public void btnExit (View view) {

    Intent intent = new Intent(getApplicationContext(), LanguageChooseActivity.class);
    startActivity(intent);

}

Если выЕсли вы хотите установить определенные параметры в зависимости от того, с какого экрана вы пришли, вы можете передать дополнительную информацию вместе с намеренным вызовом. Просто вставьте код между определением Intent и вызовом startActivity.

intent.putExtra("STRING_NAME", VALUE_UNDEFINED); // use "" on the value if sending a string else, don't

, затем, когда ваш LanguageChooseActivity запустится снова, вы можете найти эту информацию с помощью следующего (здесь вам нужно определить тип отправленной переменной)

Intent intent = getIntent();

if (intent.getStringExtra("STRING_NAME").equals("VALUE")) { 
// or (intent.getIntExtra("STRING_NAME") == 0) etc

    // do work

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...