zoukankan      html  css  js  c++  java
  • Android初级教程Fragment到Fragment的通信初探

    这里只是给出三个类RightFragment、LeftFragment、MainActivity中的简易代码,至于布局怎么设定,不做赘述。

    思路:从碎片一获取与之依托的活动实例,碎片一可以调用活动里面的功能;在活动中获取碎片二的活动实例,活动可以使用碎片二的功能。碎片一间接调用碎片二的功能。

    一、RightFragment:

    package com.example.fragmenttest2;
    
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    public class RightFragment extends Fragment {
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
                    MainActivity activity = (MainActivity) getActivity();//获取与之依托的活动实例
    		LeftFragment callleft = activity.callleft();
    		callleft.show();//使用活动的功能,这个功能正好是调用碎片二的方法。
    		View view = inflater.inflate(R.layout.right_fragment, container, false);
    		return view;
    	}
    	
    	public void show(){
    		System.out.println("RightFragment");
    	}
    }
    

    二、MainActivity:

    package com.example.fragmenttest2;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class MainActivity extends Activity implements OnClickListener {
    
    	private LeftFragment leftFragment;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		Button button = (Button) findViewById(R.id.button);
    		Button button1 = (Button) findViewById(R.id.button1);
    		button.setOnClickListener(this);
    		button1.setOnClickListener(this);
    		
    	}
    
    	@Override
    	public void onClick(View v) {
    		switch (v.getId()) {
    		case R.id.button://按钮一,实现了一次替换碎片的功能
    			AnotherRightFragment fragment = new AnotherRightFragment();
    			FragmentManager fragmentManager = getFragmentManager();
    			FragmentTransaction transaction = fragmentManager
    					.beginTransaction();
    			transaction.replace(R.id.right_layout, fragment);
    			transaction.addToBackStack(null);
    			transaction.commit();
    			break;
    		case R.id.button1:
    			leftFragment = (LeftFragment) getFragmentManager()//按钮二,可直接使用left碎片即碎片二的功能
    					.findFragmentById(R.id.left_fragment);
    			leftFragment.show();
    			break;
    		default:
    			break;
    		}
    
    	}
    	
    	public void show(){
    		System.out.println("MainActivity");
    	}
    	
    	public LeftFragment callleft(){//抽取方法,调用碎片二的功能
    		leftFragment = (LeftFragment) getFragmentManager()
    				.findFragmentById(R.id.left_fragment);
    		return leftFragment;
    	}
    
    }
    

    三、LeftFragment:

    package com.example.fragmenttest2;
    
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    public class LeftFragment extends Fragment {
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
    
    		View view = inflater.inflate(R.layout.left_fragment, container, false);
    		return view;
    	}
    	
    	public void show(){//碎片二的功能,这里只为了演示知识打印一行输出
    		System.out.println("LeftFragment");
    	}
    }
    

    启动程序,发现直接打印的一行输出:

    LeftFragment

    这样就实现了碎片与活动,以及碎片与碎片直接的通信。



  • 相关阅读:
    JavaScript操作符instanceof揭秘
    Linux打开txt文件乱码的解决方法
    Working copy locked run svn cleanup not work
    poj 2299 UltraQuickSort 归并排序求解逆序对
    poj 2312 Battle City 优先队列+bfs 或 记忆化广搜
    poj2352 stars 树状数组
    poj 2286 The Rotation Game 迭代加深
    hdu 1800 Flying to the Mars
    poj 3038 Children of the Candy Corn bfs dfs
    hdu 1983 Kaitou Kid The Phantom Thief (2) DFS + BFS
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299670.html
Copyright © 2011-2022 走看看