ViewModel类
class TimeTableViewModel extends ViewModel {
private MutableLiveData<String> start_time_str = new MutableLiveData<>();
void send_StartTime(String start_Time){
start_time_str.setValue(start_Time);
}
LiveData<String> get_StartTime(){
return start_time_str;
}}
在ViewModel类中,我有一个MutableLiveData<String> start_time_str
,它已经初始化为new MutableLiveData<>();
我想在Activity类中使用void send_StartTime(String start_Time)
函数来设置参数String start_Time
的值,并在Fragment类中调用start_time_str
。
Activity类
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case android.R.id.home:
finish();
break;
case R.id.add_schedule_save:
String start_time_str = startTime.getText().toString();
Intent intent_restart0 = new Intent(TimeTable_Add_New_Schedule.this, MainActivity.class);
startActivity(intent_restart0);
TimeTableViewModel timeTableViewModel = new TimeTableViewModel();
timeTableViewModel.send_StartTime(start_time_str);
Toast.makeText(this,""+start_time_str,Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}
片段类
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
TimeTableViewModel timeTableViewModel = new TimeTableViewModel();
timeTableViewModel.get_StartTime().observe(getViewLifecycleOwner(), new Observer<String>() {
@Override
public void onChanged(String s) {
mon_textView_11.setText(s);
}
});
}
在 Fragment 类中,我调用
get_StartTime()
函数来获取 start_time_str
并将 String 值设置到我的 TextView 中。我认为由 Activity 类中的 timeTableViewModel.send_StartTime(start_time_str);
函数成功设置了 start_time_str
,因为 Toast.maketext 能够正常工作。然而,TextView 没有显示任何内容。我已经测试过 Text Color 不是白色,所以如果正确调用了字符串值,它应该出现在屏幕上。如果您有任何建议,我很乐意听取您的建议。非常感谢。
val myViewModel: TimeTableViewModel by navGraphViewModels(R.id.navigation_graph)
。很高兴我能帮上忙。 :) - BVantur