Получить выбранный элемент счетчика для использования в условии - PullRequest
0 голосов
/ 23 января 2020

Я могу сохранить выбранные состояния элемента моего счетчика. У меня просто возникают проблемы с отправкой и извлечением выбранных элементов для использования в операторе if в следующем упражнении.

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

Вот мой код:

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



    LastSelectedItem = getSharedPreferences("PriorSelected", MODE_PRIVATE);

    go_back_btn = (Button) findViewById(R.id.go_back_btn);
    themeSpinner = (Spinner) findViewById(R.id.themeSpinner);


    go_back_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            LastSelectedItem = getSharedPreferences("PriorSelected", MODE_PRIVATE);
            SharedPreferences.Editor editor = LastSelectedItem.edit();
            editor.apply();
            Intent intent = new Intent(getApplicationContext(), home.class);
            startActivity(intent);
        }
    });


    int LastSelection = LastSelectedItem.getInt("LastSelection", 0);
    editor = LastSelectedItem.edit();


    ArrayAdapter<CharSequence> themeAdapter = ArrayAdapter.createFromResource(settings.this, R.array.theme_array, android.R.layout.simple_spinner_item);
    themeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);

    themeSpinner.setAdapter(themeAdapter);
    themeSpinner.setSelection(LastSelection);


    themeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            editor.putInt("LastSelection", position).apply();


        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

}
}

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Все в порядке, я нашел ответ.

// send data to next activity
    go_back_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int Myposition = themeSpinner.getSelectedItemPosition();
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor.putInt("LastSelection", Myposition);
            editor.apply();
            Intent intent = new Intent(getApplicationContext(), home.class);
            startActivity(intent);

Ниже приведен код для извлечения при следующей операции:

//    Retrieve and implement conditional statement
private void ToggleTheme() {
    final SharedPreferences LastSelectedItem = getApplicationContext().getSharedPreferences("PriorSelected", Context.MODE_PRIVATE);
    int LastSelection = LastSelectedItem.getInt("LastSelection", 0);
    if (LastSelection == 1) {
        homebutton.setBackgroundResource(R.drawable.light_theme_buttons);
0 голосов
/ 23 января 2020
SharedPreferences settings = getSharedPreferences("app_pref", 0);
SharedPreferences.Editor editor = settings.edit();

 themeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                  //To save
editor.putInt("position",position);
editor.commit();


                }

                @Override
                public void onNothingSelected(AdapterView<?> parent) {

                }
            });



   //To retrieve in next activity
   SharedPreferences settings = getSharedPreferences("app_pref", 0);
   int snowDensity = settings.getInt("position", -1); //0 is the default value

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

 int position=-1;   

 themeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                position=position;


            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                position=-1;
            }
        });


       go_back_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent = new Intent(getApplicationContext(), home.class);
               intent.putExtra("position", position);
                startActivity(intent);
            }
        });

Второе действие:

int position= getIntent().getIntExtra("position", -1); 
...