Установите видимость для представления в коде Java (TabLayout) - PullRequest
0 голосов
/ 15 июня 2019

У меня есть кнопка, и я хочу, чтобы она была невидимой при запуске программы. Проблема в том, что я использую TabLayout и не могу изменить эту функцию в методе onCreate().

Я написал следующий код onCreate():

((Button) findViewById(R.id.btn1)).setVisibility(View.INVISIBLE);

но обнаружена ошибка: Null Pointer Exeption!

Я хочу включить невидимую функцию кнопки, не нажимая кнопку в начале программы.

button, к которому я хочу применить свойство invisible, принадлежит одному из моих tablayout layouts, а не activity_main_layout. По этой причине, когда я хочу применить свойство invisible, я получаю Null Pointer Exeption error. Я хотел знать решение. Что я должен сделать, чтобы подключить button object к Layer view(Xml Button)?

Мои коды:

public class MainActivity extends AppCompatActivity{

ViewPager viewPager;
private TabLayout tabLayout;

int[] layoutRes = {R.layout.call_tab,R.layout.access_tab,R.layout.gap_tab,R.layout.support_tab,R.layout.news_tab};

int[] iconTabs = {R.mipmap.ic_phone_in_talk_white_36dp, R.mipmap.ic_android_studio_white_36dp,
        R.mipmap.ic_android_messages_white_36dp, R.mipmap.ic_currency_usd_white_36dp,
        R.mipmap.ic_home_white_36dp};

public ImageView img_notification;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    tabLayout = (TabLayout) findViewById(R.id.tablayout);
    viewPager.setAdapter(new TabsAdapter());
    tabLayout.setupWithViewPager(viewPager);

    TabLayout.Tab tabnews = tabLayout.getTabAt(4);
    tabnews.select();

    img_notification = (ImageView) findViewById(R.id.img_notification);
    (!Error in this line) img_notification.setVisibility(View.INVISIBLE);(!)

     SetFontForTabs();

    for (int i = 0; i < iconTabs.length; i++) {
        tabLayout.getTabAt(i).setIcon(iconTabs[i]);
    }

    }

public class TabsAdapter extends PagerAdapter{

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        View view = LayoutInflater.from(MainActivity.this).inflate(layoutRes[position],container,false);
        container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        View view = (View) object;
        container.removeView(view);
    }

    @Override
    public int getCount() {
        return layoutRes.length;
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }
}

}

1 Ответ

0 голосов
/ 19 июня 2019

Я нашел ответ и решил поделиться им. Проблема была в том, что я написал коды для всех слоев в MainActivity. Мне нужно написать код каждого слоя в отдельном фрагменте. Если у вас возникла та же проблема, поищите этот заголовок: «Создать вкладку с фрагментом». Удачи! :)

...