簡體   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