-1

you can download my zip hereAndroid изменения Фрагмент страницы

нормально, так что я сделал приложение с Размах + Tab View я хочу на каждой вкладке, чтобы показать diffrent страницу .xml если и нажмите выше вы можете загрузить свое рабочее место, чтобы изменить его .. я действительно нужна помощь, пожалуйста, укажите, хотите ли вы, если хотите, я смогу настроить teamviwer, если это может быть быстрее .. Если вы не хотите загружать файл, вы думаете, что «у него есть вирус» просто сделайте ответ ниже, вот мой код для mainactivity .java

package twh.reviser.root; 

import java.util.Locale; 


import android.os.Bundle; 
import android.renderscript.Int2; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.NavUtils; 
import android.support.v4.view.ViewPager; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

public class MainActivity extends FragmentActivity { 

/** 
* The {@link android.support.v4.view.PagerAdapter} that will provide 
* fragments for each of the sections. We use a 
* {@link android.support.v4.app.FragmentPagerAdapter} derivative, which 
* will keep every loaded fragment in memory. If this becomes too memory 
* intensive, it may be best to switch to a 
* {@link android.support.v4.app.FragmentStatePagerAdapter}. 
*/ 
SectionsPagerAdapter mSectionsPagerAdapter; 

/** 
* The {@link ViewPager} that will host the section contents. 
*/ 
ViewPager mViewPager; 

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


    // Create the adapter that will return a fragment for each of the three 
    // primary sections of the app. 
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

    // Set up the ViewPager with the sections adapter. 
    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 



/** 
* A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
* one of the sections/tabs/pages. 
*/ 
public class SectionsPagerAdapter extends FragmentPagerAdapter { 

    public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     // getItem is called to instantiate the fragment for the given page. 
     // Return a DummySectionFragment (defined as a static inner class 
     // below) with the page number as its lone argument. 
     Fragment fragment = new DummySectionFragment(); 
     Bundle args = new Bundle(); 
     args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public int getCount() { 
     // Show 3 total pages. 
     return 3; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     Locale l = Locale.getDefault(); 
     switch (position) { 
      case 0: 
       return getString(R.string.title_section1).toUpperCase(l); 
      case 1: 
       return getString(R.string.title_section2).toUpperCase(l); 
      case 2: 
       return getString(R.string.title_section3).toUpperCase(l); 
     } 
     return null; 
    } 
} 

/** 
* A dummy fragment representing a section of the app, but that simply 
* displays dummy text. 
*/ 
public static class DummySectionFragment extends Fragment { 
    /** 
    * The fragment argument representing the section number for this 
    * fragment. 
    */ 
    public static final String ARG_SECTION_NUMBER = "section_number"; 

    public DummySectionFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main_dummy, container, false); 
     TextView dummyTextView = (TextView) rootView.findViewById(R.id.section_label); 
      dummyTextView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER))); 
     return rootView; 
    } 
} 

} 
+0

Что не работает на самом деле? – Greensy

+0

@Greensy извините, если я сделал это un clear, поэтому у меня есть 3 вкладки t1 t2 t3, когда im на t1 я хочу, чтобы он показывал новую страницу xml и t2, так что у меня возникли проблемы с изменением xml, когда он переходит к новому вкладка .. любые идеи или помощь? –

+0

, как и каждый раздел или вкладка, должны быть разными и сложными вещами, как на вкладке 1, у него должна быть кнопка tab2 text tab 3, но как я могу сделать это, чтобы показать разные действия или фрагменты? –

ответ

1

Приведен пример моего адаптера, который решает вашу проблему. TabsPagerAdapter - это просто отдельный класс.

/** 
* This is a helper class that implements the management of tabs and all 
* details of connecting a ViewPager with associated TabHost. It relies on a 
* trick. Normally a tab host has a simple API for supplying a View or 
* Intent that each tab will show. This is not sufficient for switching 
* between pages. So instead we make the content part of the tab host 
* 0dp high (it is not shown) and the TabsAdapter supplies its own dummy 
* view to show as the tab content. It listens to changes in tabs, and takes 
* care of switch to the correct paged in the ViewPager whenever the selected 
* tab changes. 
*/ 
public class TabsPagerAdapter extends FragmentPagerAdapter implements TabHost.OnTabChangeListener, ViewPager.OnPageChangeListener{ 
    private final Context mContext; 
    private final TabHost mTabHost; 
    private final ViewPager mViewPager; 
    private final OnPageChangeListener mListener; 
    private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); 
    private final FragmentManager mFragmentManager; 






    static final class TabInfo { 
     private final String tag; 
     private final Class<?> clss; 
     private final Bundle args; 

     TabInfo(String _tag, Class<?> _class, Bundle _args) { 
      tag = _tag; 
      clss = _class; 
      args = _args; 
     } 
    } 

    static class DummyTabFactory implements TabHost.TabContentFactory { 
     private final Context mContext; 

     public DummyTabFactory(Context context) { 
      mContext = context; 
     } 

     @Override 
     public View createTabContent(String tag) { 
      View v = new View(mContext); 
      v.setMinimumWidth(0); 
      v.setMinimumHeight(0); 
      return v; 
     } 
    } 

    public void addTab(String label, String tag, Drawable drawable, Class<?> c, int resourse) { 
     addTab(this.mContext, label, tag, drawable, c, resourse); 
    } 

    public void addTab(Context context, String label, String tag, Drawable drawable, Class<?> c, int resourse) { 
     Intent intent = new Intent(context, c); 
     TabHost.TabSpec spec = mTabHost.newTabSpec(tag); 

     View tabIndicator = LayoutInflater.from(context).inflate(resourse, (TabWidget)mTabHost.findViewById(android.R.id.tabs), false); 

     ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon); 
     icon.setImageDrawable(drawable); 
     icon.setScaleType(ImageView.ScaleType.FIT_CENTER); 

     spec.setIndicator(tabIndicator); 
     spec.setContent(intent); 
     this.addTab(spec, c, null); 
    } 

    public TabsPagerAdapter(FragmentActivity activity, TabHost tabHost, ViewPager pager, OnPageChangeListener listener, FragmentManager manager) { 
     super(manager); 
     mFragmentManager = manager; 
     mContext = activity; 
     mTabHost = tabHost; 
     mViewPager = pager; 
     mListener = listener; 
     mTabHost.setOnTabChangedListener(this); 
     mViewPager.setAdapter(this); 
     mViewPager.setOnPageChangeListener(this); 

    } 

    public void addTab(TabHost.TabSpec tabSpec, Class<?> clss, Bundle args) { 
     tabSpec.setContent(new DummyTabFactory(mContext)); 
     String tag = tabSpec.getTag(); 

     TabInfo info = new TabInfo(tag, clss, args); 
     mTabs.add(info); 
     mTabHost.addTab(tabSpec); 
     notifyDataSetChanged(); 
    } 

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


    @Override 
    public CharSequence getPageTitle (int position){ 

    } 



    public Fragment getCurrentFragment() { 
     return getFragmentAt(mTabHost.getCurrentTab()); 
    } 

    public Fragment getFragmentAt(int position){ 
     return mFragmentManager.findFragmentByTag("android:switcher:" + mViewPager.getId() + ":" + position); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     TabInfo info = (TabInfo) mTabs.get(position); 
     return Fragment.instantiate(mContext, info.clss.getName(), info.args); 
    } 

    @Override 
    public void onTabChanged(String tabId) { 
     //called when the user clicks on a tab. 
     int position = mTabHost.getCurrentTab(); 
     if(mViewPager.getCurrentItem() != position){ 
      mViewPager.setCurrentItem(position); 
     } 
    } 

    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     if(mListener!=null){ 
      mListener.onPageScrolled(position, positionOffset, positionOffsetPixels); 
     } 
    } 

    @Override 
    public void onPageSelected(int position) { 
     // Unfortunately when TabHost changes the current tab, it kindly 
     // also takes care of putting focus on it when not in touch mode. 
     // The jerk. 
     // This hack tries to prevent this from pulling focus out of our 
     // ViewPager. 
     TabWidget widget = mTabHost.getTabWidget(); 
     int oldFocusability = widget.getDescendantFocusability(); 
     widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); 
     mTabHost.setCurrentTab(position); 
     widget.setDescendantFocusability(oldFocusability); 
     if(mListener!=null){ 
      mListener.onPageSelected(position); 
     } 

    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 
     if(mListener!=null){ 
      mListener.onPageScrollStateChanged(state); 
     } 
    } 
} 

Это андроид пример framentadapter с крошечными модификациями.

Пример использования MainActivity.java

class MainActivity extends FragmentActivuty{ 

public void onCreate(Bundle savedInstanceState){ 
    setContentView(R.layout.activity_main); 

    mTabHost = (TabHost) findViewById(android.R.id.tabhost); 
    mTabHost.setup(); 
    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mTabsAdapter = new TabsPagerAdapter(this, mTabHost, mViewPager,null, getSupportFragmentManager()); 

    mTabsAdapter.addTab("Button", "button",getResources().getDrawable(R.drawable.yourdrawable), 
    ButtonFragment.class, R.layout.yourtablayout); 

    mTabsAdapter.addTab("Text","text",getResources().getDrawable(R.drawable.yourdrawable), TextFragment.class, R.layout.yourtablayout); 


    //This is needed so your tabs do not reload each time 
    mViewPager.setOffscreenPageLimit(mTabsAdapter.getCount()); 

} 
+0

im все еще путают, поэтому я добавляю это в свой MainActivity.java или заменяю MainActivity.java этим –

+0

. Я добавлю некоторые комментарии. – Greensy

+0

Я думаю, что я понял это ... Greensy, если я не могу понять, командовать со мной? –

0

Я интегрирован код, который я написал с кодом вы предоставили. Я думаю, что это должно сработать, основываясь на том, что вы использовали универсальную настройку Android ADT.

package twh.reviser.root; 

import java.util.Locale; 


import android.os.Bundle; 
import android.renderscript.Int2; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.NavUtils; 
import android.support.v4.view.ViewPager; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

public class MainActivity extends FragmentActivity { 

    static final int NUM_ITEMS = 3; 

    /** 
    * The {@link android.support.v4.view.PagerAdapter} that will provide 
    * fragments for each of the sections. We use a 
    * {@link android.support.v4.app.FragmentPagerAdapter} derivative, which 
    * will keep every loaded fragment in memory. If this becomes too memory 
    * intensive, it may be best to switch to a 
    * {@link android.support.v4.app.FragmentStatePagerAdapter}. 
    */ 
    SectionsPagerAdapter mSectionsPagerAdapter; 

    /** 
    * The {@link ViewPager} that will host the section contents. 
    */ 
    ViewPager mViewPager; 

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


     // Create the adapter that will return a fragment for each of the three 
     // primary sections of the app. 
     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

     // Set up the ViewPager with the sections adapter. 
     mViewPager = (ViewPager) findViewById(R.id.pager); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 

    /** possibly missing from your code*/ 
     // For each of the sections in the app, add a tab to the action bar. 
     for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { 
      actionBar.addTab(actionBar.newTab() 
        .setText(mSectionsPagerAdapter.getPageTitle(i)) 
        .setTabListener(this)); 
     } 
    } 

    @Override 
    public void onTabSelected(ActionBar.Tab tab, 
      FragmentTransaction fragmentTransaction) { 
     // When the given tab is selected, switch to the corresponding page in 
     // the ViewPager. 
     mViewPager.setCurrentItem(tab.getPosition()); 
    } 

    @Override 
    public void onTabUnselected(ActionBar.Tab tab, 
      FragmentTransaction fragmentTransaction) { 
    } 

    @Override 
    public void onTabReselected(ActionBar.Tab tab, 
      FragmentTransaction fragmentTransaction) { 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    /** 
    * A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
    * one of the sections/tabs/pages. 
    */ 
    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

     Context c; 

     public SectionsPagerAdapter(Context c,FragmentManager fm) { 
      super(fm); 
      this.c = c;   
     } 

     @Override 
     public Fragment getItem(int position) { 

      Fragment fragment = null; 

      if (position == 0) { 

       fragment = new FragmentPage1(c); 

       Bundle args = new Bundle(); 
       args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1); 
       fragment.setArguments(args); 

       } 

      if (position == 1) { 

       fragment = new FragmentPage2(c); 

       Bundle args = new Bundle(); 
       args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1); 
       fragment.setArguments(args); 

       } 
      if (position == 2) { 

       fragment = new FragmentPage3(c); 

       Bundle args = new Bundle(); 
       args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1); 
       fragment.setArguments(args); 

      } 
      return fragment; 
     } 

     @Override 
     public int getCount() { 
      // Show 3 total pages. 
      return NUM_ITEMS; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      Locale l = Locale.getDefault(); 
      switch (position) { 
       case 0: 
        return getString(R.string.title_section1).toUpperCase(l); 
       case 1: 
        return getString(R.string.title_section2).toUpperCase(l); 
       case 2: 
        return getString(R.string.title_section3).toUpperCase(l); 
      } 
      return null; 
     } 
    } 

    /** 
    * A dummy fragment representing a section of the app, but that simply 
    * displays dummy text. 
    */ 
    public static class DummySectionFragment extends Fragment { 
     /** 
     * The fragment argument representing the section number for this 
     * fragment. 
     */ 
     public static final String ARG_SECTION_NUMBER = "section_number"; 

     public DummySectionFragment() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.fragment_main_dummy, container, false); 
      TextView dummyTextView = (TextView) rootView.findViewById(R.id.section_label); 
       dummyTextView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER))); 
      return rootView; 
     } 
    } 

} 

Создайте три XML-файлы для каждого из трех фрагментов в Рез/макет/

Fragment_1.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" > 
    <TextView 
     android:id="@+id/textview1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

Fragment_2.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" > 
    <TextView 
     android:id="@+id/textview1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

Fragment_3.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" > 
    <TextView 
     android:id="@+id/textview1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

Создать три файла Java для трех фрагментов в ИПВ/twh.reviser.root

FragmentPage1.java

package twh.reviser.root; 

public class FragmentPage1 extends Fragment { 

    Context c; 

    public FragmentInputPage1(){ 
    } 

    public FragmentInputPage1(Context c) { 
     this.c = c; 
    } 

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

     View v = inflater.inflate(R.layout.Fragment_1, null); 

     return v; 

    } 
} 

FragmentPage2.java

package twh.reviser.root; 

public class FragmentPage2 extends Fragment { 

    Context c; 

    public FragmentInputPage2(){ 
    } 

    public FragmentInputPage2(Context c) { 
     this.c = c; 
    } 

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

     View v = inflater.inflate(R.layout.Fragment_2, null); 

     return v; 

    } 
} 

FragmentPage3.java

package twh.reviser.root; 

public class FragmentPage3 extends Fragment { 

    Context c; 

    public FragmentInputPage3(){ 
    } 

    public FragmentInputPage3(Context c) { 
     this.c = c; 
    } 

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

     View v = inflater.inflate(R.layout.Fragment_3, null); 

     return v; 

    } 
} 

Если вы хочешь получить значение идентификатора из другого фрагмента можно использовать ниже, на основе FragmentPage1, имеющем следующее общие переменные объявляется

public static String a,b,c; 

В FragmentPage1.java

public class FragmentPage3 extends Fragment { 

Context c; 

String a = ""; 
String b = ""; 
String c = ""; 

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

    View v = inflater.inflate(R.layout.Fragment_3, null); 

    a = FragmentPage1.a; 
    b = FragmentPage1.b; 
    c = FragmentPage1.c; 
Смежные вопросы