繁体   English   中英

如何使用共享首选项保存 Spinner Position?

[英]How to Save Spinner Position with Shared preferences?

我正在制作一个 android 应用程序,要求用户通过微调器将蓝牙配对设备连接到 select。

当用户第一次打开应用程序时,用户会从列表中选择蓝牙配对设备**。 然后当应用程序第二次打开时,我希望选择相同的蓝牙配对设备。 我不希望用户每次打开应用程序时都使用配对设备 select。 怎么做?

Spinner btPairedDevicesSpinner;  
BluetoothManager mBluetoothManager;
BluetoothAdapter mBluetoothAdapter;
BluetoothDevice [] mBluetoothDeviceArray; 

btPairedDevicesSpinner = findViewById(R.id.btPairedDevicesSpinner);
mGetBluetoothPairedDevice ();
btPairedDevicesSpinner.setOnItemSelectedListener(mPairedDeviceOnItemSelectedListener);

public void mGetBluetoothPairedDevice () {
        Set<BluetoothDevice> mPairedDevice = mBluetoothAdapter.getBondedDevices();
      mBluetoothDeviceArray = new BluetoothDevice[mPairedDevice.size()];
        String [] strings = new String[mPairedDevice.size()];
        int index = 0;
        if (mPairedDevice.size() > 0) {
            for (BluetoothDevice device : mPairedDevice) {
                mBluetoothDeviceArray [index] = device;
                strings [index] = device.getName();
                index++;
            }
        }
        else {
            String mOnDevice = "No Device found";
            mPairedDeviceArrayAdapter.add(mOnDevice);
        }
        ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, strings);
        btPairedDevicesSpinner.setAdapter(mArrayAdapter);
    }

private final AdapterView.OnItemSelectedListener mPairedDeviceOnItemSelectedListener = new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {


            ConnectThread mConnectThread = new ConnectThread(mBluetoothDeviceArray [i], view);
            mConnectThread.start();

            mBluetoothToolBar.setSubtitle("Connecting");
        }
        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
            Toast.makeText(BluetoothMain.this, "Nothing is selected", Toast.LENGTH_SHORT).show();
        }
    };

一种应该起作用的方法。 将所选设备名称存储在共享首选项中。 (在其他地方创建 sharedPref object onCreate() 并在微调器 onItemChanged() 中进行编辑)

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
sharedPref.edit().putString("btDeviceName", "the name").apply();

调用 btPairedDevicesSpinner.setAdapter(mArrayAdapter) 后; 从共享首选项加载设备名称,如果微调器上有一个调用 setSelection()

String deviceName = sharedPref.getString("btDeviceName", null);
if(deviceName != null){
     btPairedDevicesSpinner.setSelection(mArrayAdapter.getPosition("deviceName "));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM