Как изменить значение TextView во фрагменте - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь изменить значение TextView во фрагменте, но оно не очищает старое значение.

Значение перекрывается со старым значением.

enter image description here

Код из фрагмента -

public class MainFragment extends Fragment {

TextView t1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_main, container, false);

    t1 = view.findViewById(R.id.textview1);
    t1.setText(s1);

    return view;
}
}

Код из действия -

public static String s1;
@Override
public void onOptionClicked(int position, Object objectClicked) {
    // Set the toolbar title
    setTitle(mTitles.get(position));

    // Set the right options selected
    mMenuAdapter.setViewSelected(position, true);
    s1 = mTitles.get(position);
    // Navigate to the right fragment
    switch (position) {
        default:
            goToFragment(new MainFragment(), false);
            break;
    }
    // Close the drawer
    mViewHolder.mDuoDrawerLayout.closeDrawer();
}

Фрагмент XML-файла -

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout xmlns:ads="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"/>

</LinearLayout>

Пробовал с использованием приведенного ниже кода, но не работает ....

public void setText(String text){
        TextView textView = (TextView) getView().findViewById(R.id.detailsText);
        textView.setText(textview1);
    }

Пожалуйста, помогите .... Спасибо заранее ...!

Ответы [ 4 ]

0 голосов
/ 13 февраля 2019

Если вы используете .add в своем коде goToFragment(), вам следует заменить на .replace

fragmentTransaction.add(R.id.container,
             currentFragment).commit()

на

fragmentTransaction.replace(R.id.fragment_container,
             currentFragment).commit()
0 голосов
/ 12 февраля 2019

фрагмент.xml добавить (android: background = "@ color / white") в свой макет.

 <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"      
android:orientation="vertical">

<LinearLayout xmlns:ads="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"/>

</LinearLayout>

0 голосов
/ 12 февраля 2019

Как сказал Ранджан, это не очень хорошая практика, почему бы вам не создать MainFragment mf = new MainFragment(); внутри onCreate () и использовать это в этом методе.Таким образом, у вас будет только один экземпляр.Я не использую подобные фрагменты, поэтому у меня нет хорошего представления о вашем коде.

0 голосов
/ 12 февраля 2019

Вы можете поместить приведенный ниже код в метод onCreateView вашего фрагмента, и это устранит эту проблему с перекрытием

View    view = inflater.inflate(R.layout.your_layout, container, false);
view.setBackgroundColor(Color.WHITE);
...