Как установить текст кнопки Android в методе onCreate?

#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 .» затем показалась моя пуговица….