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

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



  • 相关阅读:
    百度地图api
    白岩松视频
    rails3 unicorn部署
    rails3 unicorn部署
    rails3 unicorn部署
    nginx geoip 模块实现地区性负载均衡
    workingwithrails
    rails部署方案
    rails3使用cucumber和rspec进行测试
    rails3 unicorn部署
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299670.html
Copyright © 2011-2022 走看看