#java #android #button #oncreate
#java #Android #кнопка #oncreate
Вопрос:
Я хочу установить текст моей кнопки в методе onCreate, но он не работает.
Код в MainActivity-классе:
Button button;
Код в onCreate:
button = findViewById(R.id.button);
button.setText("test");
Butto в xml:
<Button
android:id="@ id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:alpha="0.5"
android:background="@color/design_default_color_secondary_variant"
android:onClick="checkPermissions"
android:textSize="30sp" />
Вот исключение:
Вызвано: java.lang.Исключение NullPointerException: попытка вызвать виртуальный метод ‘void android.widget.Button.setText(java.lang.CharSequence)’ для нулевой ссылки на объект
Я знаю, что могу установить текст кнопки в XML, но я хочу установить текст при запуске приложения с помощью sharedpreferences, но это не сработает, если я не могу даже установить на него простую строку, вызвав этот простой способ.
Комментарии:
1. вы позвонили
setContentView(your_layout.xml)
первым? В противном случае ваше действие не отображается и ничего не может найти.findViewById
2. Да, но кнопка не в activity_main.xml . Он находится в fragment_recording.xml .
Ответ №1:
Чтобы найти фрагмент идентификатора, вам нужна ссылка на просмотр.
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Button button= view.findViewById(R.id.button);
button.setText("text");
}
Комментарии:
1. Куда я должен поместить этот метод?
2. @OSbOoL в вашем фрагменте
3. Большое вам спасибо. Это то, что я искал.
Ответ №2:
Вам лучше поделиться всем onCreate()
кодом, чтобы получить помощь.
К настоящему времени я мог бы предположить, что вы не вызываете setContentView(R.layout.your_layout_with_button)
onCreate()
метод перед доступом к кнопке путем вызова findViewById(R.id.button)
.
Весь код внутри onCreate()
будет выглядеть примерно так:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.your_layout_with_button)
val button = findViewById(R.id.button)
button.setText("test")
}
Комментарии:
1. onCreate в порядке, кнопка находится в другом фрагменте, чем в activity_main.xml . Может ли это быть ошибкой? Но как я могу получить доступ к моей кнопке тогда? Если я наберу «R.id .» затем показалась моя пуговица….