一般情况下,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相关推荐

  1. android调用另一app的xml,Android 7.0+调用其他App打开文件

    ​ 近期需要用到读取Android设备外存中的JSON和Word,在前期开发时用于调试的是Android 6.0的米4,当拿到实际应用环境(Android 7.0)时,Android 6.0之后的版本 ...

  2. js调用android.webkit,h5调用原生App的方法合集 window.webkit.messageHandlers

    测试demo 调用原生关闭函数 let u = navigator.userAgent let isAndroid = u.indexOf('Android') > -1 || u.indexO ...

  3. [Android6.0]App中调用init.rc中的服务,从而运行shell脚本

    Author: Younix Platform: RK3399 OS: Android 6.0 Kernel: 4.4 Version: v2017.07 需求:希望在 Android App 中添加 ...

  4. android中viewpager+fragment,ViewPager和Fragment一篇就够了

    ViewPager显示多Fragment使用问题 前言:每当使用ViewPager时,对于选用什么适配器,缓存多少页面,是否需要懒加载以及Fragment的数据刷新经常会有些疑问,网络上的答案很多,但 ...

  5. android单个页面切换_Android基础之使用Fragment控制切换多个页面

    今天讲解一下Fragment的控制,主要是切换View和页面替换等操作.还有就是如何获取Fragment的管理对象,以及与Activity的通信方式. 1.管理Fragment要在activity中管 ...

  6. android fragment 白屏,当应用Crash后fragment出现白屏

    前段时间,发现一个问题,就是当应用发生Crash后,fragment莫名其妙的出现了白屏,经检查发现,其实并不是fragment没有加载而是空指针导致了数据无法加载所以产生了白屏现象.这是一个什么空指 ...

  7. android fragment 教程,Android app开发中的Fragment入门学习教程

    在Android3.0上开始引入了一个新概念叫Fragment.它有自己的布局文件,可以作为组件排布,也可以相互组合去实现不同的布局显示.使用Fragment可以重复利用代码,并且可以满足不同设备尺寸 ...

  8. android 应用间共享数据,调用其他app数据资源

    在Android里面每个app都有一个唯一的linux user ID,则这样权限就被设置成该应用程序的文件只对该用户可见,只对该应用程序自身可见:而我们可以使他们对其他的应用程序可见,可以通过Sha ...

  9. app包中的fragment和v4包中的fragment的使用的区别

    转自 http://blog.csdn.net/a465456465/article/details/10415211 app包中的fragment和v4包中的fragment的使用的区别 1.尽量不 ...

  10. android app调用第三方地图路线规划导航(百度,高德,腾讯)

    android app调用第三方地图路线规划导航(百度,高德,腾讯) 因为直接使用高德的sdk提供的导航被投诉说不准,所以需要接第三方. 把BAT系的地图都接上了,有兄弟找到其他的地图调用方法告诉下小 ...

最新文章

  1. R语言使用ggpubr包的ggbarplot函数可视化分组条形图(grouped bar plot)、并添加误差条(error bar、误差条显示平均值+/-sd)、不添加填充色、添加jitter抖动
  2. mysql存储过程结构体_八、mysql视图、存储过程、函数以及时间调度器
  3. #Sora#OpenStack基础库oslo.config试用总结
  4. Python坑:bool是int的子类、列表循环中的变量泄露、lambda在闭包中会保存局部变量、重用全局变量
  5. 【Hadoop应用案例】针对运营商支付业务的渠道推荐系统
  6. 长连接和Keepalive
  7. pom.xml中依赖的<optional>true</optional>标签
  8. 比特币挖矿成本表_用算力趋势预测减半后比特币挖矿成本价
  9. (转)解决Google Adsense广告只显示英文的问题
  10. 华为nova6升级鸿蒙os,华为公布升级计划:鸿蒙OS系统开始推送,覆盖百款机型
  11. rgmanager 介绍
  12. Git(8)-- 撤消操作(git commit --amend、git reset 和 git checkout 命令详解)
  13. pip mysql_config not found_pip安装mysql-python出现mysql_config not found错误
  14. linux直播电视软件下载,周末了!通过Linux Mint开发的IPTV播放器观看海量国内外直播电视...
  15. WinHttp用法(WinHttp.WinHttpRequest.5.1方法,属性)
  16. scratch制作彩虹猫病毒模拟器
  17. 阿里电话面试经过与总结
  18. 《矛盾论》与《实践论》
  19. 运行内存4g电脑装linux够用,win10系统4g内存够用吗|win10安装4g内存够不够用
  20. 落笔成殇,一路颠簸红尘

热门文章

  1. 【论文阅读】Deep contextualized word representations
  2. 预训练模型的下一步?突破Impossible Triangle
  3. 2021年NLP重要国际会议时间
  4. 深度学习文本分类|模型代码技巧
  5. 中国高校改名发展史:改了名,我们就是一流大学了
  6. Transformers Assemble(PART I)
  7. 机器学习十大经典算法——线性回归
  8. 想来字节跳动和我做同事吗?抓紧这次机会吧~
  9. numpy - np.asarray
  10. 深度学习5-模型的保存与加载