2015-06-18 11 views
5

yeni Parçası ile tamamen Görünüm Çağrı görünümünü değiştirmek için aşağıdaki xml dosyası vardır:Nasıl Android

<android.support.v4.view.ViewPager 
    xmlns:android="http://schemas.android.com/apk/res/android" 

    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

Ben görünümü çağrı cihazı üç parçaları var. fragmanın birinde Bu kodu kullanarak yeni fragman başlatmak için çalışıyorum: Ben başarıyla ViewPager mevcut fragmanının yerini açabiliyorum

FragmentTransaction trans = getFragmentManager() 
       .beginTransaction(); 
     trans.replace(R.id.pager, new SubscriptionFragment()); 
     trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     trans.addToBackStack(null); 

     trans.commit(); 

ama, benim amaca hizmet etmez ne Bunu yapmak arzusu, viewPager'da halihazırda var olan mevcut parçayı değiştirmemek, fakat görünüm çağrı cihazını görünümden çıkarmak ve yeni bir Parçayı başlatmak, böylece üst tırnakların artık görünmemesi ve ViewPager'ın görünümden geçmesidir. Bu, niyetini kullanarak yeni bir etkinlik başlattığımda çalışır. ama bir parça için çalışmıyor.

Edited:

public class MainActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout, new MainFragment()).commit(); 
    } 


} 

MainFragment:

public class MainFragment extends Fragment { 

    FragmentPagerAdapter adapterViewPager; 
    ViewPager viewPager; 
    String title[] = {"Services", "You", "History"}; 

    // TODO: Rename and change types and number of parameters 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     /* Inflate the layout for this fragment */ 
     View view = inflater.inflate(R.layout.fragment_view_pager, container, false); 




     /*************************************/ 
     //CALLING HISTORY API 

     // loadSubscriptions(); 

     return view; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     ViewPagerAdapter mAdapter = new ViewPagerAdapter(getFragmentManager()); 

     ViewPager mPager = (ViewPager) getView().findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 
    } 

    public static class ViewPagerAdapter extends FragmentPagerAdapter { 
     public ViewPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int num) { 
      if (num == 0) { 
       return new ServicesFragment(); 
      } else { 
       return new HistoryFragment(); 
      } 
     } 

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

activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/frame_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 

</FrameLayout> 

fragment_view_pager.xml

<?xml version="1.0" encoding="utf-8"?> 

<android.support.v4.view.ViewPager 
    xmlns:android="http://schemas.android.com/apk/res/android" 

    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 
servicefragment olarak

: Ben kullanarak yeni fragman açımı ediyorum:

physiotherapyView.setOnClickListener(new View.OnClickListener() { 





@Override 

     public void onClick(View view) { 

      FragmentTransaction trans = getFragmentManager() 
        .beginTransaction(); 
      /* 
      * IMPORTANT: We use the "root frame" defined in 
      * "root_fragment.xml" as the reference to replace fragment 
      */ 
      trans.replace(R.id.pager, new SubscriptionFragment()); 

      /* 
      * IMPORTANT: The following lines allow us to add the fragment 
      * to the stack and return to it later, by pressing back 
      */ 
      trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
      trans.addToBackStack(null); 

      trans.commit(); 

     } 

    }); 
+0

çok Fragment içeride ViewPager nedir? –

+0

@ItzikSamara kendi içinde bir etkinlik! – user3458008

cevap

0

ekle etmeyin, ViewPager İçinde FrameLayout.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/frame_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 

</FrameLayout> 

ViewPager içeren bu düzen içinde Fragment ekleyin ve

public class MainActivity extends FragmentActivity { 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout, new MainFragment()).commit(); 

İşte MainActivity içinde FragmentTransaction ekleyin MainFragment Şimdi FragmentTransaction

ile tüm düzen adresinin viewPager yerini alabilir, ViewPager içeriyor
+0

Soruma göre güncelledim – user3458008

+0

Zaten aldım, lütfen cevabın uygun olup olmadığını kontrol edin. – Abhishek

+0

Ne demeye çalıştığınızı anlamadım. Yeni bir sınıf oluşturmam ve FragmentActivity'i genişletmem gerektiğini söylemeyi kastediyorsun. Ve viewPager'ı bir etkinlik yerine bir Parçanın içine koydu mu? – user3458008

1

Aşağıda, Fragmanları bir Görüntü çağrı cihazına eklemek veya kaldırmak için kullanılan tam kod yer almaktadır. Bu sadece bir textView kullanıyorum ve eklenen her parça rasgele bir renge sahip olacağından sadece bir gösteri olduğu için. Bir düğmeye tıklayarak istediğiniz sayıda parça ekleyebilirsiniz. Page 'i tıklatarak sadece View Pager'dan kaldırabilirsiniz. .Görüntüleme Seçici'de bir Sayfadan diğerine sağa veya sola Kaydırma ile taşıyabilirsiniz.

MainActivity.java

import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.View; 
import android.widget.Button; 
import java.util.ArrayList; 
import java.util.Random; 

public class MainActivity extends FragmentActivity { 

    private MyPagerAdapter mpg; 
    private ArrayList<MyFragment> fragmentlist = new ArrayList<>(); 
    public FragmentManager fmr = getSupportFragmentManager(); 

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

     final ViewPager pager = (ViewPager) findViewById(R.id.viewPager); 
     mpg = new MyPagerAdapter(fmr,fragmentlist); 
     pager.setAdapter(mpg); 

     for (int q = 0; q < 5; q++) { 
      int r = new Random().nextInt(100) + 155; 
      int g = new Random().nextInt(100) + 155; 
      int b = new Random().nextInt(100) + 155; 
      fragmentlist.add(MyFragment.newInstance(q, "Page number: " + (q + 1), Color.rgb(r, g, b))); 
      mpg.notifyDataSetChanged(); 
     } 

     Button B1 = (Button) findViewById(R.id.button); 
     B1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       int r = new Random().nextInt(100) + 155; 
       int g = new Random().nextInt(100) + 155; 
       int b = new Random().nextInt(100) + 155; 
       int count = mpg.getCount(); 
       fragmentlist.add(MyFragment.newInstance(count, "Page number: " + (count+1), Color.rgb(r, g, b))); 
       mpg.notifyDataSetChanged(); 

      } 
     }); 
    } 

    public void delete(int pos) { 

     int i = 0; 
     while (i <= fragmentlist.size()) { 
      if (pos == fragmentlist.get(i).getPosition()) break; 
      i++; 

     } 

     fragmentlist.remove(i); 
     mpg.notifyDataSetChanged(); 
    } 

    public class MyPagerAdapter extends FragmentStatePagerAdapter { 

     private ArrayList<MyFragment> fragmentList; 
     public MyPagerAdapter(FragmentManager fm, ArrayList<MyFragment> f) { 
      super(fm); 
      this.fragmentList = f; 
     } 

     @Override 
     public Fragment getItem(int pos) { 
      return fragmentlist.get(pos); 
     } 

     @Override 
     public int getCount() { 
      return fragmentlist.size(); 
     } 

     @Override 
     public int getItemPosition(Object object) { 
      return POSITION_NONE; 
     } 
    } 
} 

MyFragment.java

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.FrameLayout; 
import android.widget.TextView; 

import java.util.List; 

public class MyFragment extends Fragment { 

    int pos; 

    @Override 
    public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.f_1, container, false); 
     pos = getArguments().getInt("num"); 
     v.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Log.v("MainActivity", "Deleting at pos - " + pos); 
       MainActivity activity = (MainActivity) getActivity(); 
       activity.delete(pos); 
      } 
     }); 

     TextView tv = (TextView) v.findViewById(R.id.tvFragFirst); 
     FrameLayout fl = (FrameLayout) v.findViewById(R.id.frame_layout); 
     tv.setText(getArguments().getString("msg")); 
     fl.setBackgroundColor(getArguments().getInt("colour")); 
     return v; 
    } 

    public int getPosition() { 
     return pos; 
    } 

    public static MyFragment newInstance(int num,String text,int clr) { 

     MyFragment f = new MyFragment(); 
     Bundle b = new Bundle(); 
     b.putString("msg", text); 
     b.putInt("colour", clr); 
     b.putInt("num",num); 
     f.setArguments(b); 
     return f; 
    } 
} 

Ve xml.files

,

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.shakthivels.assingment10.MainActivity" 
    android:id="@+id/r_v" 
    > 

    <android.support.v4.view.ViewPager 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/viewPager" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"/> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="ADD a fragment" 
     android:id="@+id/button" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 

f_1.xml

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

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/frame_layout"> 

     <TextView 
      android:id="@+id/tvFragFirst" 
      android:layout_width="203dp" 
      android:layout_height="127dp" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:textSize="26sp" 
      android:text="TextView" 
      android:layout_gravity="center" 
      android:textColor="#000000" /> 

    </FrameLayout> 
</RelativeLayout> 

Already Existing Fragment1 Newly added Fragment to the view Pager2