loloof64
loloof64

Reputation: 5392

My ViewPager is empty

I've created an about activity in my Android application, with a ViewPager. But I can't see any content

My AboutActivity.java:

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v13.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.loloof64.android.chess_positions_archiver.R;

/**
 * The about activity
 */
public class AboutActivity extends Activity {

    static final int NUM_ITEMS = 2;

    AboutDialogFragmentPagerAdapter pagerAdapter;
    ViewPager viewPager;

    static String pagesContents [] = new String[NUM_ITEMS];

    public void exit(View view){
        finish();
    }

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

         pagesContents[0] = getString(R.string.this_app_manual);
         pagesContents[1] = getString(R.string.about_resources_content);

        pagerAdapter = new   AboutDialogFragmentPagerAdapter(getFragmentManager(),
                new String[]{
                       "Chess Positions Archiver",
                        getString(R.string.about_resources_title)
                });
        viewPager = (ViewPager) findViewById(R.id.about_dialog_pager);
        viewPager.setAdapter(pagerAdapter);
        viewPager.setCurrentItem(0);
    }

    public static class AboutDialogFragmentPagerAdapter extends FragmentStatePagerAdapter {

        private String [] titles;

        public AboutDialogFragmentPagerAdapter(FragmentManager fragmentManager, String [] titles){
            super(fragmentManager);
            this.titles = titles;
        }

        @Override
        public Fragment getItem(int position) {
            return AboutDialogSingleFragment.newInstance(position);
        }

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

        @Override
        public CharSequence getPageTitle(int position) {
            return titles[position];
        }
    }

    public static class AboutDialogSingleFragment extends Fragment {

        static String PAGE_TEXT_KEY = "PageTextKey";
        private String pageText;

        static AboutDialogSingleFragment newInstance(int position){
            AboutDialogSingleFragment fragment = new   AboutDialogSingleFragment();
            Bundle arguments = new Bundle();
            arguments.putString(PAGE_TEXT_KEY, pagesContents[position]);
            fragment.setArguments(arguments);
            return fragment;
        }

        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.about_dialog_single_page_layout, container, false);
            TextView pageTextView = (TextView) view.findViewById(R.id.about_dialog_page_textview);
            pageTextView.setText(pageText);
            container.addView(view);
            return view;
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            pageText = getArguments() != null ?   getArguments().getString(PAGE_TEXT_KEY) :                       getResources().getString(R.string.about_dialog_content_error);
        }
    }
}

My about_dialog_layout.xml :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/about_dialog_tabs"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.view.ViewPager
        android:id="@+id/about_dialog_pager"
        android:layout_width="match_parent"
        android:layout_height="0px"
        android:layout_weight="1">
    </android.support.v4.view.ViewPager>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="@string/quit_about"
        android:onClick="exit" />

</RelativeLayout>

My about_dialog_single_page_layout.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/about_dialog_page_textview"/>

</LinearLayout>

I am using the support library 13.

So, what is my programming error ?

Upvotes: 1

Views: 385

Answers (1)

Blackbelt
Blackbelt

Reputation: 157447

android:layout_weight="1" works only with LinearLayout (it is a property of LinearLayout). Since the ViewPager's parent is a RelativeLayout the property is ignored, and your ViewPager has height 0, which explain why you are not see anything

Upvotes: 4

Related Questions