String ArrivalTimeString;
TextView ArriavalTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArriavalTime = findViewById(R.id.arrival_time_tv);
mArrivalTimepicker = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
ArrivalTimeString = hourOfDay + ":" + minute;
ArriavalTime.setText(ArrivalTimeString);
}
};
}
Если вы хотите повторно использовать ArrivalTimeString вне метода onTimeSet()
, вам следует заменить его на глобальную переменную вместо локальной.
Когда вы создали свой ArrivalTimeString внутри onTimeSet()
, вы создаете его как локальную переменную.Локальная переменная будет жить только до конца метода, в котором вы ее объявили, поэтому, как только вы достигнете конца onTimeSet()
, переменная ArrivalTimeString уже исчезнет.
Таким образом, вы получите ошибку cannot resolve Symbol 'ArrivalTimeString'
при попытке использовать ArrivalTimeString в других методах.
Это потому, что ваша ArrivalTimeString просто больше не существует, потому что метод, в котором он был создан, уже завершен.
Следовательно, исправление для этого заключается в объявлении переменной ArrivalTimeString в качестве глобальной переменной.Помещая переменную вне методов, вы заставляете «жизнь» переменной существовать до тех пор, пока класс еще жив.
Кроме того, вам следует избегать использования findViewById()
внутри вашего OnTimeSetListener()
.Поиск представления по Id может быть дорогостоящим процессом, поэтому, если вы собираетесь часто обращаться к TextView, вам также следует объявить ArriavalTime за пределами OnTimeSet()
.Это позволяет вашему приложению постоянно искать вид каждый раз, когда устанавливается время.
PS Я полагаю, у вас может быть опечатка для TextView ArriavalTime.