Android Fragment-APP调用其他APP中的Fragment 1
一般情况下,APP之间调用对方的界面基本上只限于Activity,以及其他Activity的子类间,通过在AndroidManifest.xml中指定<action android:name ....行为.
今天给一个可以调用对方Fragment的方法.
<1>新建两个android工程fragmentdemo1,fragmentdemo2;
<2>在fragmentdemo1工程中新建两个继承Fragment的类.
<3>在fragmentdemo2添加一个按钮.这个按钮的作用就是调用fragmentdemo1工程中Fragment(实际上还是启动Activity);
<4> : fragmentdemo1工程source :
MainActivity.java
package com.example.fragmentdemo1;import frag.testFragmenttwo; import android.os.Bundle; import android.app.Activity; 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 {private Button mSwitchBtn;private testFragmenttwo ttwofrag;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ttwofrag = new testFragmenttwo();final FragmentTransaction trasection = getFragmentManager().beginTransaction();getFragmentManager().beginTransaction();trasection.replace(R.id.layone, ttwofrag);trasection.addToBackStack(null);trasection.commit();mSwitchBtn = (Button) findViewById(R.id.button1);mSwitchBtn.setVisibility(View.GONE);mSwitchBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub/** getFragmentManager().beginTransaction();* * trasection.replace(R.id.layone, ttwofrag);* trasection.addToBackStack(null); trasection.commit();*/}});}@Overridepublic 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;}}
xml:这个文件的结果有点特点,我们利用Fragment去占用一个虚位占用的Layout布局ID
<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=".MainActivity" ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="switch fragments" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/layone"android:orientation="horizontal" ><!-- <fragmentandroid:id="@+id/fone"android:name="frag.testFragmentone"android:layout_width="match_parent"android:layout_height="wrap_content" /> --></LinearLayout><!--<fragment android:name="frag.testFragmenttwo"android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/ftwo"/>-->"</RelativeLayout>
testFragmentone.java
package frag;import com.example.fragmentdemo1.R;import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup;public class testFragmentone extends Fragment{@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn inflater.inflate(R.layout.fragone, container,false);}}
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" ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="fragment one" /></LinearLayout>
testFragmenttwo.java
package frag;import com.example.fragmentdemo1.R;import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup;public class testFragmenttwo extends Fragment{@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn inflater.inflate(R.layout.fragtwo, container,false);}}
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" ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="fragment two" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button7"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button" /></LinearLayout>
这个工程的配置文件需要修改如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.fragmentdemo1"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="18" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.fragmentdemo1.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><intent-filter><action android:name="android.intent.action.FT" /><category android:name="android.intent.category.DEFAULT"/></intent-filter></activity></application></manifest>
<3> fragmentdemo2工程source:
MainActivity.java
package com.example.fragmentdemo2;import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button;public class MainActivity extends Activity {private Button mStartBtn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mStartBtn = (Button) findViewById(R.id.button1);mStartBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent in = new Intent("android.intent.action.FT");in.addCategory("android.intent.category.DEFAULT");MainActivity.this.startActivity(in);}});}@Overridepublic 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;}}
xml :
<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=".MainActivity" ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:layout_marginLeft="98dp"android:layout_marginTop="42dp"android:text="startup fragment" /></RelativeLayout>
这个demo演示一个App的启动另外一App的Activity,但是这个Activity在启动时就"加载Fragmenttwo"的Fragment,所以感觉上App直接启动了另外一个APP的Fragemnt界面.
source code : http://yunpan.cn/QIjvZxSLWE6vg
借鉴了该文章的思路:http://android.9tech.cn/news/2013/1202/39041.html
转载于:https://www.cnblogs.com/MMLoveMeMM/articles/3614982.html
Android Fragment-APP调用其他APP中的Fragment 1相关推荐
- android调用另一app的xml,Android 7.0+调用其他App打开文件
近期需要用到读取Android设备外存中的JSON和Word,在前期开发时用于调试的是Android 6.0的米4,当拿到实际应用环境(Android 7.0)时,Android 6.0之后的版本 ...
- js调用android.webkit,h5调用原生App的方法合集 window.webkit.messageHandlers
测试demo 调用原生关闭函数 let u = navigator.userAgent let isAndroid = u.indexOf('Android') > -1 || u.indexO ...
- [Android6.0]App中调用init.rc中的服务,从而运行shell脚本
Author: Younix Platform: RK3399 OS: Android 6.0 Kernel: 4.4 Version: v2017.07 需求:希望在 Android App 中添加 ...
- android中viewpager+fragment,ViewPager和Fragment一篇就够了
ViewPager显示多Fragment使用问题 前言:每当使用ViewPager时,对于选用什么适配器,缓存多少页面,是否需要懒加载以及Fragment的数据刷新经常会有些疑问,网络上的答案很多,但 ...
- android单个页面切换_Android基础之使用Fragment控制切换多个页面
今天讲解一下Fragment的控制,主要是切换View和页面替换等操作.还有就是如何获取Fragment的管理对象,以及与Activity的通信方式. 1.管理Fragment要在activity中管 ...
- android fragment 白屏,当应用Crash后fragment出现白屏
前段时间,发现一个问题,就是当应用发生Crash后,fragment莫名其妙的出现了白屏,经检查发现,其实并不是fragment没有加载而是空指针导致了数据无法加载所以产生了白屏现象.这是一个什么空指 ...
- android fragment 教程,Android app开发中的Fragment入门学习教程
在Android3.0上开始引入了一个新概念叫Fragment.它有自己的布局文件,可以作为组件排布,也可以相互组合去实现不同的布局显示.使用Fragment可以重复利用代码,并且可以满足不同设备尺寸 ...
- android 应用间共享数据,调用其他app数据资源
在Android里面每个app都有一个唯一的linux user ID,则这样权限就被设置成该应用程序的文件只对该用户可见,只对该应用程序自身可见:而我们可以使他们对其他的应用程序可见,可以通过Sha ...
- app包中的fragment和v4包中的fragment的使用的区别
转自 http://blog.csdn.net/a465456465/article/details/10415211 app包中的fragment和v4包中的fragment的使用的区别 1.尽量不 ...
- android app调用第三方地图路线规划导航(百度,高德,腾讯)
android app调用第三方地图路线规划导航(百度,高德,腾讯) 因为直接使用高德的sdk提供的导航被投诉说不准,所以需要接第三方. 把BAT系的地图都接上了,有兄弟找到其他的地图调用方法告诉下小 ...
最新文章
- R语言使用ggpubr包的ggbarplot函数可视化分组条形图(grouped bar plot)、并添加误差条(error bar、误差条显示平均值+/-sd)、不添加填充色、添加jitter抖动
- mysql存储过程结构体_八、mysql视图、存储过程、函数以及时间调度器
- #Sora#OpenStack基础库oslo.config试用总结
- Python坑:bool是int的子类、列表循环中的变量泄露、lambda在闭包中会保存局部变量、重用全局变量
- 【Hadoop应用案例】针对运营商支付业务的渠道推荐系统
- 长连接和Keepalive
- pom.xml中依赖的<optional>true</optional>标签
- 比特币挖矿成本表_用算力趋势预测减半后比特币挖矿成本价
- (转)解决Google Adsense广告只显示英文的问题
- 华为nova6升级鸿蒙os,华为公布升级计划:鸿蒙OS系统开始推送,覆盖百款机型
- rgmanager 介绍
- Git(8)-- 撤消操作(git commit --amend、git reset 和 git checkout 命令详解)
- pip mysql_config not found_pip安装mysql-python出现mysql_config not found错误
- linux直播电视软件下载,周末了!通过Linux Mint开发的IPTV播放器观看海量国内外直播电视...
- WinHttp用法(WinHttp.WinHttpRequest.5.1方法,属性)
- scratch制作彩虹猫病毒模拟器
- 阿里电话面试经过与总结
- 《矛盾论》与《实践论》
- 运行内存4g电脑装linux够用,win10系统4g内存够用吗|win10安装4g内存够不够用
- 落笔成殇,一路颠簸红尘