Не устанавливается текст TextView во Фрагменте

Логика такова: есть Activity с TextField. Данные с него идут в MainActivity, в котором идёт работа с фрагментами. Через Bundle получаю данные с TextField в виде String и уже через другой Bundle отправляю в класс фрагмента, где принимаю String и устанавливаю текст. Но текст не сеттится, почему? Код прилагается. Заранее спасибо за ответы

MainActivity.java

package com.example.checklist;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;

import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {



    Button createTask;
    Button taskList;
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    Fragment fragmentUNLOGIN = new BottomButtonsFragment();
    Fragment fragmentAfterLOGIN = new bottomBarMainAftertLoginFragment();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Bundle arguments = getIntent().getExtras();

        createTask = (Button) findViewById(R.id.createTask);
        createTask.setOnClickListener(this);

        taskList = (Button) findViewById(R.id.taskList);
        taskList.setOnClickListener(this);

        Boolean isLogin = arguments != null && arguments.getBoolean("isLogin", false);
        String userName = arguments != null ? arguments.getString("UserName") : null;



        if (isLogin == false) {
            ft.add(R.id.fragmentsMainActivity, fragmentUNLOGIN);
        } else {
            Bundle bundle = new Bundle();
            bundle.putString("UserName", userName);
            fragmentAfterLOGIN.setArguments(bundle);
            ft.replace(R.id.fragmentsMainActivity, fragmentAfterLOGIN);
        }
        ft.commit();
        }


    @Override
    public void onClick (View v){
        Bundle arguments = getIntent().getExtras();
        Boolean isLogin = arguments != null && arguments.getBoolean("isLogin", false);
        Intent intent;
        switch (v.getId()) {
            case R.id.createTask:
                if (isLogin == false){
                    Toast mes1 = Toast.makeText(MainActivity.this, "Вы не вошли в аккаунт. Пожалуйста войдите в аккаунт", Toast.LENGTH_SHORT);
                    mes1.show();
                } else {
                    intent = new Intent(MainActivity.this, CreateTaskActivity.class);
                    startActivity(intent);
                }
                break;
            case R.id.taskList:
                if (isLogin == false){
                    Toast mes1 = Toast.makeText(MainActivity.this, "Вы не вошли в аккаунт. Пожалуйста войдите в аккаунт", Toast.LENGTH_SHORT);
                    mes1.show();
                } else {
                    intent = new Intent(MainActivity.this, TaskListActivity.class);
                    startActivity(intent);
                }
                break;
            case R.id.loginOFF:
                intent = new Intent(MainActivity.this, offlineAccountLoginActivity.class);
                startActivity(intent);
                break;
            default:
                break;
        }
    }
}

offlineAccountLoginActivity.java

package com.example.checklist;

import androidx.appcompat.app.AppCompatActivity;


import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class offlineAccountLoginActivity extends AppCompatActivity implements View.OnClickListener {


    Button loginButtonOff;
    TextView loginNameOff;
    boolean isLogin;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_offline_account_login);

        loginButtonOff = (Button) findViewById(R.id.loginButtonOff);
        loginButtonOff.setOnClickListener(this);

        loginNameOff = (TextView) findViewById(R.id.loginNameOFF);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.loginButtonOff: ;
                isLogin = true;
                Intent intent = new Intent(this, MainActivity.class);
                intent.putExtra("isLogin", isLogin);
                intent.putExtra("UserName", loginNameOff.getText());
                startActivity(intent);
                break;
            default:
                break;
        }
    }
}

bottomBarMainAftertLoginFragment

package com.example.checklist;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;



public class bottomBarMainAftertLoginFragment extends Fragment {

    TextView userName;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_bottom_bar_main_aftert_login, container, false);
        userName = (TextView) v.findViewById(R.id.userName);
        Bundle bundle = getArguments();
        if (bundle != null) {
            userName.setText(bundle.getString("UserName"));
        }


        return inflater.inflate(R.layout.fragment_bottom_bar_main_aftert_login, container, false);
    }
}

fragment_bottom_bar_main_aftert_login.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".bottomBarMainAftertLoginFragment">

    <TextView
        android:id="@+id/userName"
        android:layout_width="190dp"
        android:layout_height="50dp"
        android:layout_gravity="bottom|left"
        android:gravity="center"
        android:text="TextView" />

    <Button
        android:id="@+id/logoutButton"
        android:layout_width="190dp"
        android:layout_height="50dp"
        android:layout_gravity="bottom|right"
        android:text="Выход" />
</FrameLayout>

Ответы (1 шт):

Автор решения: ЮрийСПб

Вы в onCreateView сетите текст в одну разметку, а отображаете другую, без текста. Просто возвращайте изменённую разметку из метода. Т.е. переменную v

→ Ссылка