2016-12-06 7 views
0

Я сделал этот код:только TextViews теряет свое значение, когда я нажимаю назад

public class THGSFragment extends Fragment 
{ 
PageFragmentListener listener; 
EditText tcET, tasET,wET,vET; 
TextView tcTW, tasTW,vwTW, tasUM, wvUM, insert11, text; 
ImageView button; 

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
{ 

    View rootView = inflater.inflate(R.layout.fragment_thg, container, false); 

    View.OnClickListener handler = new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View view) 
     { 
      if (view.getId() == R.id.calcEAS) 
      { 
      listener.replace(0,THGSCalcFragment.class,null); 
      } 
      else if(view.getId() == R.id.rhoUM) 
      { 
       RecyclerSpeedFragment dialog = new RecyclerSpeedFragment(); 
       dialog.setTargetFragment(THGSFragment.this, 1); 
       dialog.show(getActivity().getSupportFragmentManager(), "SPEEDDIALOGTAG"); 

      } 
     } 
    }; 


    button= (ImageView) rootView.findViewById(R.id.calcEAS); 
    button.setOnClickListener(handler); 
    tcET = (EditText)rootView.findViewById(R.id.paisaET); 
    tcET.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Book.ttf")); 
    tcTW = (TextView)rootView.findViewById(R.id.tasTW); 
    tcTW.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Book.ttf")); 
    tasET = (EditText)rootView.findViewById(R.id.oatdET); 
    tasET.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Book.ttf")); 
    tasTW = (TextView)rootView.findViewById(R.id.paisaTW); 
    tasTW.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Book.ttf")); 
    wET = (EditText)rootView.findViewById(R.id.wET); 
    wET.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Book.ttf")); 
    vET = (EditText)rootView.findViewById(R.id.vET); 
    vET.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Book.ttf")); 
    tasUM = (TextView)rootView.findViewById(R.id.rhoUM); 
    tasUM.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Medium.ttf"),Typeface.BOLD); 
    tasUM.setOnClickListener(handler); 
    vwTW = (TextView)rootView.findViewById(R.id.wTW); 
    vwTW.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Book.ttf")); 
    wvUM = (TextView)rootView.findViewById(R.id.vUM); 
    wvUM.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Medium.ttf"),Typeface.BOLD); 
    insert11 = (TextView)rootView.findViewById(R.id.insert11); 
    insert11.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Book.ttf")); 
    text = (TextView)rootView.findViewById(R.id.eascalculate); 
    text.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Book.ttf")); 


    return rootView; 
} 

public void onAttach(Context context) 
{ 
    super.onAttach(context); 

    if (context instanceof PageFragmentListener) 
    { 
     listener = (PageFragmentListener) context; 
    } else 
    { 
     throw new RuntimeException(context.toString() 
       + " deve implementare PageFragmentListener"); 
    } 
} 

@Override 
public void onDetach() 
{ 

    Log.d("str","Ondetach"); 
    super.onDetach(); 
    listener = null; 
} 

public void setText(String text) 
{ 
tasUM.setText(text); 
} 
} 

, который хорошо работает. Когда я нажимаю на button меняю фрагмент и я хожу здесь:

public class THGSCalcFragment extends Fragment 
{ 

PageFragmentListener listener; 
Button back, graphics; 

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
{ 
    View rootView = inflater.inflate(R.layout.fragment_thgscalc, container, false); 

    Bundle bundle = getArguments(); 
    RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerthgs); 
    recyclerView.setNestedScrollingEnabled(false); 

    back = (Button)rootView.findViewById(R.id.buttonBack); 
    graphics = (Button)rootView.findViewById(R.id.buttonGraphics); 

    back.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Book.ttf")); 
    graphics.setTypeface(Typeface.createFromAsset(getActivity().getAssets(),"fonts/Avenir-Book.ttf")); 


    THGSAdapter adapter = new THGSAdapter(getActivity()); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
    recyclerView.addItemDecoration(new SimpleDividerItemDecoration(getActivity())); 
    recyclerView.setAdapter(adapter); 



    return rootView; 
} 

public void onResume() 
{ 
    super.onResume(); 

    if(getView() == null) 
    { 
     return; 
    } 

    getView().setFocusableInTouchMode(true); 
    getView().requestFocus(); 
    getView().setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 

      if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) 
      { 

       listener.back(); 
       Log.e("resume","resume THGS"); 
       return true; 
      } 
      return false; 
     } 
    }); 
} 

public void onAttach(Context context) 
{ 
    super.onAttach(context); 

    if (context instanceof PageFragmentListener) 
    { 
     listener = (PageFragmentListener) context; 
    } else 
    { 
     throw new RuntimeException(context.toString() 
       + " deve implementare PageFragmentListener"); 
    } 
} 

@Override 
public void onDetach() 
{ 
    super.onDetach(); 
    listener = null; 
} 
} 

, когда я нажимаю назад, я мог видеть значение на EditTexts вставленного раньше, но я не мог видеть значение в TextView tasUM вставленное раньше с dialogFragment , Почему это происходит?

Благодаря

ответ

0

Используйте этот атр: android:freezesText в вашем XML для TextView.

От Docs:

Если установлено, то вид текста будет включать в свой текущий полный текст внутри замороженном сосульки в дополнение к мета-данные, такие как текущее положение курсора. По умолчанию это отключено; это может быть полезно, когда содержимое текстового представления не сохраняется в постоянном месте, таком как поставщик контента. Для EditText он всегда включен, независимо от значения атрибута. Должно быть логическое значение, либо «true», либо «false».

+0

это работает хорошо, если я извлекаю значение диалога с помощью onActivityResult(), он не работает, если я использую интерфейсы – ste9206

Смежные вопросы