java - 检索微调器选定的项目以在条件语句中使用

标签 java android sharedpreferences android-spinner

我能够保存微调器所选项目的状态。我只是在发送和检索要在下一个 Activity 的 if 语句中使用的选定项目时遇到问题。

我知道我必须使用共享首选项,但在旋转项目方面我遇到了一些麻烦。

这是我的代码:

    @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) {

        }
    });

}
}

最佳答案

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 并将其传递给下一个 Activity ,而不是共享首选项。

 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);
            }
        });

第二个 Activity :

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

关于java - 检索微调器选定的项目以在条件语句中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59877871/

相关文章:

java - 不能用Eclipse做StringBuilder

java - 工具栏在 Android 4.X 设备上不可见

android - 卸载并重新安装android应用程序后如何保留数据

java - 为什么我的 SWT Shell 总是在后台出现?

java - Spring Data Neo4j Repository Composition 错误 : No property XXXX found for type YYYY

Java - 平均线性图

android - 在 ListView 中添加收藏夹按钮

java - 如何捕获从 lambda 抛出的异常

Android从另一个复选框更改复选框首选项的值

java - Android 与 ArrayList 的共享首选项