# Pass Variables to ViewModel
## Introduction
We will have two fragments sharing same viewModel. So if there is an update in the information used by both, both will update automatically.
## Coding Part
We will need to make a **viewModel, viewmodel factory** to achieve this.
**ViewModel**
```java===
package com.studyappjava.viewmodel;
import android.util.Log;
import androidx.lifecycle.ViewModel;
public class MainVM extends ViewModel {
public MainVM(String input){
Log.d("VM Factory", input);
}
}
```
**ViewModel Factory**
```java===
package com.studyappjava;
import androidx.annotation.NonNull;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import com.studyappjava.viewmodel.MainVM;
@SuppressWarnings("unchecked")
public class ViewModelFactory implements ViewModelProvider.Factory {
private String textDisplay;
public ViewModelFactory(String input){
this.textDisplay = input;
}
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
if(modelClass.isAssignableFrom(MainVM.class)){
return ((T) new MainVM(this.textDisplay));
}
throw new IllegalArgumentException("VM not found");
}
}
```
**Activity**
```java===
package com.studyappjava.activity;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProviders;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import com.studyappjava.R;
import com.studyappjava.ViewModelFactory;
import com.studyappjava.databinding.ActivityFactoryVmBinding;
import com.studyappjava.viewmodel.MainVM;
public class FactoryVMActivity extends AppCompatActivity {
private ActivityFactoryVmBinding dealBind;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initView();
initVM();
}
private void initView(){
View dealView = LayoutInflater.from(this).inflate(R.layout.activity_factory_vm, null);
dealBind = ActivityFactoryVmBinding.bind(dealView);
setContentView(dealBind.getRoot());
}
private void initVM(){
ViewModelFactory vmFactory = new ViewModelFactory("Pass argument to VM Successful through VM Factory!");
ViewModelProviders.of(this, vmFactory).get(MainVM.class);
}
}
```