I want to pass data to activity to fragment with use of Reference of Activity :
code as below:In MainActiivty
public Integer i = 0; 
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 thread = new Thread() {
            @Override
            public void run() {
                try {
                    while (!thread.isInterrupted()) {
                        Thread.sleep(1000);
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                i++;
                            }
                        });
                    }
                } catch (InterruptedException e) {
                }
            }
        };
        thread.start();
}
In Fragment:
MainActivity ma=new MainActivity();
mySpeed = String.valueOf(ma.i);
Problem is value of i remain 0 , i can't get updated value of i
if I Store i into another Globe variable (j) and In fragment
  MainActivity ma=new MainActivity();
   mySpeed = String.valueOf(ma.j);
then i got Error
java.lang.NumberFormatException: For input string: "null"
        at java.lang.Integer.parseInt(Integer.java:521)
        at java.lang.Integer.valueOf(Integer.java:611)
whole code of Fragment
 public class SpeedFragment extends Fragment {
        View view;
        TextView SpeedFrgvalue;
        DigitSpeedView DigitrpmFrgView;
        SpeedView speedometer;
        Button DigitalView,Gaugeview;
        LinearLayout linearLayoutspeed;
        String mySpeed;
        private int myInteger;
        Thread thread;
        public SpeedFragment() {
            // Required empty public constructor
        }
        @RequiresApi(api = Build.VERSION_CODES.M)
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Bundle bundle = this.getArguments();
            mySpeed = bundle.getString("speed");
                  Toast.makeText(getContext(),mySpeed,Toast.LENGTH_SHORT).show();
        }
        public void setMyInteger(int i) {
            this.myInteger = i;
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            view=inflater.inflate(R.layout.fragment_speed, container, false);
            SpeedFrgvalue=(TextView)view.findViewById(R.id.speedfrgvalue);
            speedometer=(SpeedView)view.findViewById(R.id.speedViewfrag);
            Gaugeview=(Button)view.findViewById(R.id.Gaugeviewid);
            DigitalView=(Button)view.findViewById(R.id.digitalviewid);
            SpeedFrgvalue.setText(String.valueOf(myInteger));
            linearLayoutspeed=(LinearLayout)view.findViewById(R.id.digitalspeedlinaear);
            DigitrpmFrgView=(DigitSpeedView)view.findViewById(R.id.digitalSpeedfrgid);
            DigitrpmFrgView.updateSpeed((myInteger));
            speedometer.setMaxSpeed(250);
    //        speedometer.speedTo(Integer.valueOf(mySpeed),4000);
            return view;
        }
    }
Inside Oncreate of MainActiivty I am calling setMyInteger; Same as mention by yusaf.
 
     
     
    