zoukankan      html  css  js  c++  java
  • Fragment的使用简单介绍【Android】

    Fragment在实际项目开发中使用的越来越多,如今简介一下

    布局文件:

    <LinearLayout 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:orientation="vertical"
        tools:context=".MainActivity" >
    
        <FrameLayout
            android:id="@+id/layout_content"
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:layout_weight="1.0" />
    
        <RadioGroup
            android:id="@+id/main_radio"
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:layout_gravity="bottom"
            android:paddingTop="8dp"
            android:background="@drawable/bottom_tab_bg"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
    
            <RadioButton
                android:id="@+id/rb_1"
                style="@style/main_tab_bottom"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:drawableTop="@drawable/icon_function" />
    
            <RadioButton
                android:id="@+id/rb_2"
                style="@style/main_tab_bottom"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:drawableTop="@drawable/icon_newscenter" />
    
            <RadioButton
                android:id="@+id/rb_3"
                style="@style/main_tab_bottom"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:drawableTop="@drawable/icon_govaffairs" />
    
            <RadioButton
                android:id="@+id/rb_4"
                style="@style/main_tab_bottom"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:drawableTop="@drawable/icon_setting" />
    
            <RadioButton
                android:id="@+id/rb_5"
                style="@style/main_tab_bottom"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:drawableTop="@drawable/icon_smartservice" />
        </RadioGroup>
    
    </LinearLayout>

    Java文件:

    package com.succ7.fragmenttest;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentStatePagerAdapter;
    import android.view.Window;
    import android.widget.FrameLayout;
    import android.widget.RadioGroup;
    import android.widget.RadioGroup.OnCheckedChangeListener;
    
    public class MainActivity extends FragmentActivity {
    
    	private FrameLayout layout_content;
    	/**
    	 * 默认显示的fragment
    	 */
    	private int index = 0;
    	private int current_index = R.id.rb_1;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		requestWindowFeature(Window.FEATURE_NO_TITLE);
    		setContentView(R.layout.activity_main);
    
    		layout_content = (FrameLayout) findViewById(R.id.layout_content);
    		RadioGroup main_radio = (RadioGroup) findViewById(R.id.main_radio);
    		
    		main_radio.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    			
    			@Override
    			public void onCheckedChanged(RadioGroup group, int checkedId) {
    				switch (checkedId) {
    				case R.id.rb_1:
    					index = 0;
    					break;
    				case R.id.rb_2:
    					index = 1;
    					break;
    				case R.id.rb_3:
    					index = 2;
    					break;
    				case R.id.rb_4:
    					index = 3;
    					break;
    				case R.id.rb_5:
    					index = 4;
    					break;
    				}
    				//这个是初始化fragment
    				Fragment fragment = (Fragment) fragments.instantiateItem(layout_content, index);
    				//默认选择第0个fragment
    				fragments.setPrimaryItem(layout_content, 0, fragment);
    				//fragment提交更新事务
    				fragments.finishUpdate(layout_content);
    			}
    		});
    		
    		main_radio.check(current_index);
    	}
    
    	// getSupportFragmentManager() 这种方法是在FragmentActivity 里面的
    	FragmentStatePagerAdapter fragments = new FragmentStatePagerAdapter(
    			getSupportFragmentManager()) {
    
    		//几个fragment就返回几个
    		@Override
    		public int getCount() {
    			return 5;
    		}
    
    		@Override
    		public Fragment getItem(int arg0) {
    			Fragment fragment = null;
    			switch (arg0) {
    			case 0:
    				fragment = new Fragment1();
    				break;
    			case 1:
    				fragment = new Fragment2();
    				break;
    			case 2:
    				fragment = new Fragment3();
    				break;
    			case 3:
    				fragment = new Fragment4();
    				break;
    			case 4:
    				fragment = new Fragment5();
    				break;
    			}
    			return fragment;
    		}
    	};
    }
    

    Fragment1,Fragment2-5代码:

    package com.succ7.fragmenttest;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    
    
    public class Fragment1 extends Fragment {
    
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
    		ImageView imageview = new ImageView(getActivity());
    		imageview.setBackgroundResource(R.drawable.g1);
    		return imageview;
    	}
    
    	@Override
    	public void onActivityCreated(Bundle savedInstanceState) {
    		super.onActivityCreated(savedInstanceState);
    	}
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    	}
    
    	@Override
    	public void setMenuVisibility(boolean menuVisible) {
    		super.setMenuVisibility(menuVisible);
    		
    		if(getView() != null){
    			getView().setVisibility(menuVisible?View.VISIBLE:View.INVISIBLE);
    		}
    		/*if(menuVisible){
    			getView().setVisibility(View.VISIBLE);
    		}else{
    			getView().setVisibility(View.INVISIBLE);
    		}*/
    	}
    
    }
    



  • 相关阅读:
    Linux 共享库
    使用Visual Studio(VS)开发Qt程序代码提示功能的实现(转)
    ZOJ 3469 Food Delivery(区间DP)
    POJ 2955 Brackets (区间DP)
    HDU 3555 Bomb(数位DP)
    HDU 2089 不要62(数位DP)
    UESTC 1307 windy数(数位DP)
    HDU 4352 XHXJ's LIS(数位DP)
    POJ 3252 Round Numbers(数位DP)
    HDU 2476 String painter (区间DP)
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5340782.html
Copyright © 2011-2022 走看看