Fragment и метод

432
16 мая 2017, 02:46

Почему не работает Метод vMoney(); В методе onViewCreate, Хотя в обработке нажатия,все нормально и все работает?

public class FragmentJob extends Fragment implements View.OnClickListener {
    Money mon = new Money();
    public TextView money_job;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
         vMoney();
         setRetainInstance(true);
         View v = inflater.inflate(R.layout.fragment_job, container, false);

        Button button1 = (Button) v.findViewById(R.id.Job1);
        Button button2 = (Button) v.findViewById(R.id.Job2);
        Button button3 = (Button) v.findViewById(R.id.Job3);
        Button button4 = (Button) v.findViewById(R.id.Job4);
        Button button5 = (Button) v.findViewById(R.id.Job5);
        Button button6 = (Button) v.findViewById(R.id.Job6);
        Button button7 = (Button) v.findViewById(R.id.Job7);
        Button button8 = (Button) v.findViewById(R.id.Job8);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        button4.setOnClickListener(this);
        button5.setOnClickListener(this);
        button6.setOnClickListener(this);
        button7.setOnClickListener(this);
        button8.setOnClickListener(this);
        return v;
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.Job1:
                mon.salary1();
                vMoney();
                break;
            case R.id.Job2:
                mon.salary2();
                vMoney();
                break;
            case R.id.Job3:
                mon.salary3();
                vMoney();
                break;
            case R.id.Job4:
                mon.salary4();
                vMoney();
                break;
            case R.id.Job5:
                mon.salary5();
                vMoney();
                break;
            case R.id.Job6:
                mon.salary6();
                vMoney();
                break;
            case R.id.Job7:
                mon.salary7();
                vMoney();
                break;
            case R.id.Job8:
                mon.salary8();
                vMoney();
                break;
        }
    }
    public void vMoney(){
        int j = money;
        money_job = (TextView) getActivity().findViewById(R.id.money_job);
        money_job.setText(String.valueOf(j));}
    }
}
Answer 1

Предположу, что уместнее будет вызвать данный метод ( vMoney ) при старте фрагмента, в методе onStart().

При построении фрагмента у Вас может и не быть ресурсов, к которым Вы обращаетесь.

По этой же причине всё работает при обработке нажатия(активити и фрагмент уже построены и стартовали и Вам доступны все объекты, к которым Вы обращаетесь.)

Изучите внимательнее жизненный цикл активити и фрагментов.

http://developer.alexanderklimov.ru/android/theory/fragment-lifecycle.php

Answer 2

   @Override 
    public void onStart() { 
        super.onStart(); 
        vMoney(); 
    }

READ ALSO
Получить день недели по дате

Получить день недели по дате

Как узнать день недели по дате? Есть такой код:

352
Запись и сохранение массива в файл [требует правки]

Запись и сохранение массива в файл [требует правки]

Мне дали задание: реализовать функцию записи и считывания массива из файлаЕсли файла нет, то его нужно создать

282
Как сделать разделитель на экране?

Как сделать разделитель на экране?

Есть 2 Layout,надо их разделить вертикальной чертойКак эту черту сделать ?

392
Как перевести на транслит?

Как перевести на транслит?

Как мне перевести строку на транслит? Например: БИТ1-15 -> BIT1-15 Может уже есть алгоритм какой-то или библиотека?

326