Android рушит пользовательские TextViews на Resume - PullRequest
0 голосов
/ 05 декабря 2018

Фон

У меня есть приложение с несколькими пользовательскими текстовыми представлениями.Эти четыре пользовательских TextViews настроены так:

public class TextView_Light extends android.support.v7.widget.AppCompatTextView {

public TextView_Light(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
}

public TextView_Light(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public TextView_Light(Context context) {
    super(context);
    init();
}

public void init() {
    Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Light.ttf");
    setTypeface(tf ,1);
}}

У меня есть TextView_Bold, TextView_Light, TextView_Regular и TextView_Thin.Каждый из них использует другой шрифт, который сохраняется в assets/fonts

Я использую TextViews следующим образом:

<de.mayr.wap.app.helper.TextView_Light
            android:id="@+id/textView_Light7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:text="@string/overviewViaBarcode"
            android:textSize="16sp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>

Когда приложение запускается, и в первый раз отображается всевыглядит великолепно, вот так: Fine looking view


Проблема

В этом представлении пользователь щелкает по одной из таблиц, появляется Dialog, гдепользователь вводит в некоторые данные.При сохранении вызывается метод представления onResume, который вызывает веб-сервис и т. Д., Например:

@Override
public void onResume() {
    super.onResume();
    callSerNrWS();
}


public void callSerNrWS() {
    if (CheckNetwork.isNetworkAvailable(getContext())) {
        final AsyncResponseFortschritt<ResponseObject<PruefauftraegeVO>> response = new AsyncResponseFortschritt<ResponseObject<PruefauftraegeVO>>() {
            @Override
            public void processFinishSerNr(ResponseObject<PruefauftraegeVO> output) {
                anw = createPruefAnwArraylist();
                seriennummerVO = findDataToSerNr();
                adapt = new PruefAnwAdapter(getContext(), anw, seriennummerVO);
                pruefListView.setAdapter(adapt);
                setVisibilityLoadAnimation(View.GONE);
                if (output.getException() != null && !output.getException().isEmpty())
                    AlertCreator.makeFailAlert(R.string.titelKeinFortschritt, R.string.textKeinFortschritt,getContext());
            }
            @Override
            public void processStartSerNr() {
                setVisibilityLoadAnimation(View.VISIBLE);
            }
        };
        AsyncCallSerNrWS ws = new AsyncCallSerNrWS(response, pruefauftraegeVO);
        ws.execute();
    }
}

И после этого в 90% случаев появляется один или несколько TextView, которые изменили его ищет от например.TextView_Light до TextView_Thin.Как показано на следующем рисунке: появление «Anzugstrom [A]» в третьем ряду теперь выглядит как TextView_Thin, а «9/48» в пятом ряду выглядит как TextView_Light Bad looking view


Что я знаю

  • Этого не происходит, когда представление отображается впервые
  • За ним нет системы,Это совершенно случайно.
  • Это происходит в действиях и фрагментах
  • Это происходит в каждом представлении, которое у меня есть, независимо от того, что TextView содержит «жестко запрограммированный» текст или текст, полученный из веб-службы
  • Это не только в списках, но и в «нормальных» представлениях
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...