Как отправить функцию из класса Fragment в другой класс в Android studio - PullRequest
0 голосов
/ 29 февраля 2020

Я застрял в программе, нужна помощь. У меня есть класс фрагмента, в котором у меня есть несколько функций, но мне нужна только одна функция из него в другом классе, этот класс не является классом фрагмента. Я использовал Intent , но из-за этого я не могу передать какую-либо функцию. пример кода ниже. Мне нужна целая функция ReadData в другом классе. так как значение данных меняется каждую секунду, поэтому я хочу, чтобы на другом экране отображалось

public class ModeFragment extends Fragment implements TitledFragment {
    public void readData(){
        if(manager.getConnectedDevices().size()<=0){
            Toast.makeText(ModeFragment.this.getActivity(),"No connected devices", Toast.LENGTH_LONG).show();
            return;
        }
        device1 = manager.getConnectedDevices().get(0);
        Map<String , String> reciveData =  getSpecificServiceInfo(device1 , CHARACTERISTIC_READABLE);
        for (Map.Entry<String, String> e : reciveData.entrySet()){
            manager.read(device1, e.getKey(), e.getValue(), new BleReadCallback() {
                @Override
                public void onRead(byte[] data, BleDevice device) {
                    Toast.makeText(ModeFragment.this.getActivity(), "Read success!   data:  " + new String(data), Toast.LENGTH_LONG).show();
//                    String str = data.toString();
//                    List<String> data1 = Arrays.asList(str.split(","));

                    Intent intent = new Intent(getActivity() , BluetoothActivity.class);
                    intent.putExtra("data" , data.toString());
                    startActivity(intent);
                }

                @Override
                public void onFail(int failCode, String info, BleDevice device) {
//                    Toast.makeText(ModeFragment.this.getActivity(), "Read fail!   data:  " + info, Toast.LENGTH_LONG).show();

                }
            });
        }

    }
private void onclick(){
    Intent intent = new Intent(ModeFragment.this.getActivity() ,  BluetoothActivity.class);       
    intent.putExtra("key" , "value of Key");
    startActivity(intent);}}

Другой класс:

public class BluetoothActivity extends AppCompatActivity {
    ModeFragment modeFragment = new ModeFragment();
    modeFragment.readData();
    Intent intent = getIntent();
    String str = intent.getStringExtra("key");
    sensor_1_value.setText(str);
    Toast.makeText(BluetoothActivity.this , str , Toast.LENGTH_LONG).show();
}

, но по намерению я получаю только эту спецификацию c Значение.

...