0

У меня проблема с моим viewpager для приложения Android, над которым я работаю. У меня есть DrawerLayout, который вызывает фрагменты. Одним из этих фрагментов является HomeFragment, который содержит 2 интерактивных текста. Я хочу, чтобы HomeFragment переключился на другой фрагмент (ParkingTutorialFragment), который имеет прокручиваемое представление. Код, который я использую, переключается на ParkingTutorialFragment, но просмотр с помощью swipeable, похоже, не работает, потому что ничего не происходит, когда я сажусь. Ниже приведен код для фрагментов и адаптера:ViewPager in Fragment, вызванный из другого фрагмента Android

import android.app.ActionBar; 
import android.app.ActionBar.Tab; 
import android.app.Activity; 
import android.app.FragmentTransaction; 
import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.ActionBarActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class ParkingTutorialFragment extends Fragment { 
    private ViewPager viewPager; 
    private int page; 
    private String title; 
    public static ParkingTutorialFragment newInstance(int page, String title) { 
     ParkingTutorialFragment parkingFragment = new ParkingTutorialFragment(); 
     Bundle args = new Bundle(); 
     args.putInt("someInt", page); 
     args.putString("someTitle", title); 
     parkingFragment.setArguments(args); 
     return parkingFragment; 
    } 

    // Store instance variables based on arguments passed 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
//  page = getArguments().getInt("someInt", 0); 
//  title = getArguments().getString("someTitle"); 
    } 

    // Inflate the view for the fragment based on layout XML 
    @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.parking_tutorial_page, container, false);  
      return rootView; 
     } 

    } 

Обратите внимание:

page = getArguments().getInt("someInt", 0); 

В строке выше возвращает нуль, я не знаю, почему, если кто-то может также сказать мне, почему это не может чтобы получить ключ для «someInt» значение, если кто-нибудь может также указать на это я очень ценю это

import java.util.LinkedHashMap; 

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.view.ViewPager; 
import android.content.Intent; 
import android.content.res.TypedArray; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 

//Fragment for the home page 
public class HomeFragment extends Fragment { 
    private TypedArray tutorial_icons; 
    private TextView tutorial_1; 
    private ViewPager viewpager; 
    FragmentPagerAdapter adapterViewPager; 


    public HomeFragment() { 

    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.home, container, false); 
     viewpager = (ViewPager) rootView.findViewById(R.id.tabs_pager); 
     adapterViewPager = new TabsPagerAdapter(getFragmentManager()); 
     viewpager.setAdapter(adapterViewPager); 
     tutorial_1 = (TextView) rootView.findViewById(R.id.tutorial_item_1); 
     tutorial_1.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View view) 
      { 
       FragmentManager fragmentManager2 = getFragmentManager(); 
       FragmentTransaction fragmentTransaction2 = fragmentManager2.beginTransaction(); 
       ParkingTutorialFragment parkingFrag = new ParkingTutorialFragment(); 
       fragmentTransaction2.addToBackStack("Back"); 
       fragmentTransaction2.hide(HomeFragment.this); 
       fragmentTransaction2.add(android.R.id.content, parkingFrag); 
       fragmentTransaction2.commit(); 
      } 
     }); 

     return rootView; 
    } 
} 

Ниже приведен код для адаптера:

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.FragmentStatePagerAdapter; 

public class TabsPagerAdapter extends FragmentPagerAdapter { 

    private static int NUM_ITEMS = 3; 

    public TabsPagerAdapter(FragmentManager fragmentManager) { 
     super(fragmentManager); 
    } 

    // Returns total number of pages 
    @Override 
    public int getCount() { 
     return NUM_ITEMS; 
    } 

    // Returns the fragment to display for that page 
    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
     case 0: // Fragment # 0 - This will show FirstFragment 
      return ParkingTutorialFragment.newInstance(0, "Page # 1"); 
     case 1: // Fragment # 0 - This will show FirstFragment different title 
      return new OffersFragment(); 
     default: 
      return ParkingTutorialFragment.newInstance(0, "Page # 1"); 
     } 
    } 

    // Returns the page title for the top indicator 
    @Override 
    public CharSequence getPageTitle(int position) { 
     return "Page " + position; 
    } 

} 

Течение HomeFragment -> Нажмите кнопку -> Перейти к ParkingTutorialFragment (должен содержать swipeview) Если кто-то может помочь мне достичь желаемой функциональности и уточнения нулевой указатель из метода .getInt, его будет очень признателен. Спасибо.

ответ

0

Если я понял, что вы правильно это сделаете трюк. Обновите свой код внутри кнопки.

FragmentManager fragmentManager2 = getFragmentManager(); 
FragmentTransaction fragmentTransaction2 = fragmentManager2.beginTransaction(); 
fragmentTransaction2.addToBackStack("Back"); 
fragmentTransaction2.hide(HomeFragment.this); 
fragmentTransaction2.add(android.R.id.content, ParkingTutorialFragment.newInstance(0, "Page # 1")); 
fragmentTransaction2.commit();