groovy
dependencies {
implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.0-rc01'
}
import androidx.lifecycle.ViewModel;
import androidx.compose.runtime.mutableStateOf;
import androidx.compose.runtime.State;
public class MyViewModel extends ViewModel {
private State<String> message = new mutableStateOf("");
public void setMessage(String message) {
this.message.value = message;
}
public State<String> getMessage() {
return message;
}
}
import androidx.compose.foundation.layout.Column;
import androidx.compose.material.Button;
import androidx.compose.material.Text;
import androidx.compose.runtime.LaunchedEffect;
import androidx.compose.runtime.collectAsState;
import androidx.compose.ui.platform.ComposeView;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
public class MyFragment extends Fragment {
private MyViewModel viewModel;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewModel = new ViewModelProvider(this).get(MyViewModel.class);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ComposeView composeView = new ComposeView(requireContext());
composeView.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
));
composeView.setContent(() -> {
Column {
Text(text = viewModel.getMessage().getValue());
Button(onClick = {
viewModel.setMessage("Hello, Lifecycle ViewModel Compose!");
}) {
Text(text = "Update Message");
}
}
});
return composeView;
}
}
viewModel = new ViewModelProvider(this).get(MyViewModel.class);
ComposeView composeView = new ComposeView(requireContext());
composeView.setContent(() -> {
// Compose UI components
});
Text(text = viewModel.getMessage().getValue());
Button(onClick = {
viewModel.setMessage("Hello, Lifecycle ViewModel Compose!");
}) {
Text(text = "Update Message");
}