возможно ли показать часть второго фрагмента в 1-м фрагменте [дубликат]

Ссылка NullReferenceException или Object, не установленная на экземпляр объекта, возникает, когда объект класса, который вы пытаетесь использовать, не создается. Например:

Предположим, что у вас есть класс с именем Student.

public class Student
{
    private string FirstName;
    private string LastName;
    public string GetFullName()
    {
        return FirstName + LastName;
    }
}

Теперь рассмотрим другой класс, в котором вы пытаетесь получить полное имя учащегося.

public class StudentInfo
{      
    public string GetStudentName()
    {
        Student s;
        string fullname = s.GetFullName();
        return fullname;
    }        
}

Как видно из вышеприведенного кода, оператор Student s - объявляет только переменную типа Student, обратите внимание, что класс Student не создается в этой точке. Следовательно, когда выполняется выполнение инструкции s.GetFullName (), она выкинет исключение NullReferenceException.

75
задан Macarse 11 April 2012 в 05:19
поделиться

5 ответов

, если кто-то еще ищет решение, я настроил ViewPage для его достижения без использования отрицательного поля, найдите здесь пример проекта https://github.com/44kksharma/Android-ViewPager-Carousel-UI , он должен работать в большинстве случаев, но вы все равно можете определить границу страницы с помощью mPager.setPageMargin(margin in pixel);

4
ответ дан 44kksharma 28 August 2018 в 04:56
поделиться

В 2017 году такое поведение также может быть легко достигнуто с помощью RecyclerView с PagerSnapHelper (добавлено в версию 25.1.0 библиотеки поддержки v7): 

Когда-то мне понадобилась такая функция, подобная viewpager, и подготовила крошечную библиотеку:

MetalRecyclerPagerView - вы можете найти весь код вместе с примеры.

В основном он состоит из одного файла класса: MetalRecyclerViewPager.java (и двух xmls: attrs.xml и идентификаторов. xml ).

Надеюсь, это поможет кому-то и сэкономит несколько часов:)

18
ответ дан Alexander Bilchuk 28 August 2018 в 04:56
поделиться

Используйте этот адаптер фрагмента и класс для просмотра viewpager в левом и правом scroll.add необходимых классах для прокрутки для просмотра следующих страниц.

package com.rmn.viewpager;

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

/**
 * The <code>PagerAdapter</code> serves the fragments when paging.
 * @author mwho
 */
public class PagerAdapter extends FragmentPagerAdapter {

    private List<Fragment> fragments;
    /**
     * @param fm
     * @param fragments
     */
    public PagerAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }
    /* (non-Javadoc)
     * @see android.support.v4.app.FragmentPagerAdapter#getItem(int)
     */
    @Override
    public Fragment getItem(int position) {
        return this.fragments.get(position);
    }

    /* (non-Javadoc)
     * @see android.support.v4.view.PagerAdapter#getCount()
     */
    @Override
    public int getCount() {
        return this.fragments.size();
    }
}



package com.manishkpr.viewpager;


import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class ViewPagerAdapter extends FragmentPagerAdapter {
    private Context _context;

    public ViewPagerAdapter(Context context, FragmentManager fm) {
        super(fm);  
        _context=context;

        }
    @Override
    public Fragment getItem(int position) {
        Fragment f = new Fragment();
        switch(position){
        case 0:
            f=LayoutOne.newInstance(_context);  
            break;
        case 1:
            f=LayoutTwo.newInstance(_context);  
            break;
        }
        return f;
    }
    @Override
    public int getCount() {
        return 2;
    }

}
-7
ответ дан Ridcully 28 August 2018 в 04:56
поделиться

Ответ от @JijuInduchoodan совершенен и работает. Однако, поскольку я относительно новичок в Android, мне потребовалось некоторое время, чтобы понять & amp; установите его правильно. Итак, я отправляю этот ответ для будущей справки и помогаю всем, кто в той же обуви, что и я.

if (viewPager == null) 
        {

            // Initializing view pager
            viewPager = (ViewPager) findViewById(R.id.vpLookBook);

            // Disable clip to padding
            viewPager.setClipToPadding(false);
            // set padding manually, the more you set the padding the more you see of prev & next page
            viewPager.setPadding(40, 0, 40, 0);
            // sets a margin b/w individual pages to ensure that there is a gap b/w them
            viewPager.setPageMargin(20);
        }

Нет необходимости устанавливать ширину на страницу ViewPager's в адаптере. Нет дополнительного кода, необходимого для просмотра предыдущего & amp; следующая страница в ViewPager. Однако, если вы хотите добавить пустое место наверху & amp; в нижней части каждой страницы вы можете установить следующий код в родительский макет родительской страницы ViewPager's.

android:paddingTop="20dp"
android:paddingBottom="20dp"

Это будет окончательный вид ViewPager.

53
ответ дан Rohan Kandwal 28 August 2018 в 04:56
поделиться

Чтобы показать предварительный просмотр левой и правой страниц, установите следующие два значения

  1. viewpager.setClipToPadding(false);
  2. viewpager.setPadding(left,0,right,0);

Если вам нужно пространство между двумя страницами в представлении, добавьте

viewpager.setPageMargin(int);
161
ответ дан Zeeshan Shabbir 28 August 2018 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: