Как использовать ArrayString для TextView.setText ViewPager в android? - PullRequest
1 голос
/ 10 января 2020

Я хочу использовать TabActivity в моем приложении android. Страницы каждого viewPager содержат 2 TextView и 1 ImageView. Я хочу записать свои тексты в ArrayString вместо простого String, но я не знаю, как его вызвать в TextView.setText?

моего класса Fragment:

public static class PlaceholderFragment extends Fragment {
    private static final String ARG_SECTION_NUMBER = " " ;
    public TextView label_TV, info_TV;
    public  ImageView photo_IMG;


    public PlaceholderFragment() {
    }


    public static PlaceholderFragment newInstance(int sectionNumber) {
        PlaceholderFragment fragment = new PlaceholderFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

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

        label_TV = (TextView) rootView.findViewById(R.id.section_label);

        //label_TV.setText(?);

        info_TV = (TextView) rootView.findViewById(R.id.section_info);
        photo_IMG = (ImageView) rootView.findViewById(R.id.section_image);
        return rootView;
    }
}

класса FragmentPagerAdapter :

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        return PlaceholderFragment.newInstance(position + 1);
    }

    @Override
    public int getCount() {
        return 6;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:

                return "SECTION 1";

           ..
                          }
        return null;
    }
}

строковый файл:

<string-array name="titles">
    <item>00</item>
    <item>11</item>
</string-array>

как я могу использовать titles arrayString для label_TV?

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Замените вашу строку

return PlaceholderFragment.newInstance(position + 1);

на

return PlaceholderFragment.newInstance((position + 1),your_titles_array,fragment_position);

Теперь замените ваш newInstance () на

public static PlaceholderFragment newInstance(int sectionNumber,String[] titlesArray, int fragment_position) {
    PlaceholderFragment fragment = new PlaceholderFragment();
    Bundle args = new Bundle();
    args.putInt(ARG_SECTION_NUMBER, sectionNumber);
    args.putStringArray("key_title_array",temp);
    args.putInt("key_fragment_position", fragment_position);
    fragment.setArguments(args);
    return fragment;
}

В режиме Oncreate

    Bundle bundle=getArguments(); 
    String[] titlesArray=bundle.getStringArray("key_title_array");
    int fragment_position=bundle.getInt("key_fragment_position");

    label_TV.setText(titlesArray[fragment_position]);

надеюсь, что эта работа:)

0 голосов
/ 10 января 2020

Вероятно, лучшее место для этого - метод newInstance () . Если это не динамично c конечно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...