Android--Fragment与Activity通信

package com.example.testfragment;

import com.example.testfragment.MainFargment.BackString;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends Activity implements BackString{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //静态加载
        //Intent intent = new Intent(this,MainActivity2.class);
        //startActivity(intent);

        MainFargment fargment = new MainFargment();
        //对Fragment通信传参数
        Bundle bundle = new Bundle();
        bundle.putString("name", "Michale");
        fargment.setArguments(bundle);
        //动态加载 FragmentManager管理者
        FragmentManager manager = getFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
        //第一个参数指定目标 动态目标容器
        transaction.add(R.id.linearLayout1, fargment, "fargment");
        transaction.addToBackStack(null);
        transaction.commit();
    }

    @Override
    public 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;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public Void WriteString(String code) {
        // TODO 自动生成的方法存根
        Toast.makeText(this, code, Toast.LENGTH_SHORT).show();
        return null;
    }
}
package com.example.testfragment;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity2 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO 自动生成的方法存根
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_main);
    }
}
package com.example.testfragment;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;

public class MainFargment extends Fragment {
    private String name = "hello michale";
    public    BackString backString;
    public interface BackString
    {
        public Void WriteString(String code);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO 自动生成的方法存根
        //return super.onCreateView(inflater, container, savedInstanceState);
        View view=inflater.inflate(R.layout.userfragment, container, false);
        String strName = getArguments().getString("name").toString();
        EditText text = (EditText) view.findViewById(R.id.editText1);
        text.setText(strName);
        backString.WriteString(name);
        return view;
    }

    @Override
    public void onAttach(Activity activity) {
        // TODO 自动生成的方法存根
        backString = (BackString) activity;
        super.onAttach(activity);
    }
}
<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="com.example.testfragment.MainActivity" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    </LinearLayout>

</RelativeLayout>
<?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" >

    <fragment
        android:id="@+id/fragment1"
        android:name="com.example.testfragment.MainFargment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</LinearLayout>
<?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" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

</LinearLayout>
时间: 2024-08-01 14:44:37

Android--Fragment与Activity通信的相关文章

Android——Fragment和Activity之间的通信+Frangment生命周期

Android--Fragment和Activity之间的通信+Frangment生命周期 Fr'agment和Activity之间的通信 1.在Fragment中声明一个接口. 2.在Activity中实现在Fargment中声明的接口. 3.在Fragment中声明一个接口对象. 4.在Frangment的生命周期Onattach方法中判断当前Activity是否实现了此Fragment中声明的接口.如果已实现,就把当前Activity转换成接口对象. 5.调用Activity中实现的方法=

android Fragment与Activity交互,互相发数据(附图具体解释)

笔者最近看官方training.发现了非常多实用又好玩的知识. 当中.fragment与Activity通信就是一个. fragment与Activity通信主要是两点: 1.fragment传递信息给Activity 此点是通过在fragment中定义接口与Activity共享数据. 2.Activity传递信息给fragment 此点主要是通过fragment的getArgument()和setArgument()两个函数传递bundle来传递. 效果:(最后附上源代码) 主要流程: 1.在

使用EventBus进行Fragment和Activity通信

使用EventBus进行Fragment和Activity通信 本文介绍EventBus的基本使用,以及用于Fragment和Activity之间通信. github地址: https://github.com/greenrobot/EventBus 版本是 EventBus-2.4.0 release EventBus是基于订阅和发布的一种通信机制,使用流程如下: 实例化EventBus对象 注册订阅者 发布消息 接受消息 对应代码 EventBus eventBus = new EventB

Android学习——Fragment与Activity通信(二)

接下来就要到Fragment向Activity传输数据了.主要的思路,就是在Fragment中创建一个回调接口,利用该回调接口实现Fragment向Activity传输数据的功能. 回调函数(接口) 在学习利用回调接口实现Fragment向Activity传输数据之前,首先要对回调函数有所了解,下面引用知乎用户futeng的回答,侵删:https://www.zhihu.com/question/19801131/answer/26586203. 简单来说,回调函数就是当在一个类A中去调用类B的

[转][译][Android基础]Android Fragment之间的通信

2014-2-14 本篇文章翻译自Android官方的培训教程,我也是初学者,觉得官方的Training才是最好的学习材料,所以边学边翻译,有翻译不好的地方,请大家指正. 如果我们在开发过程中为了重用Fragment这个UI组件,那么我们应该把Fragment设计成是“自包含”.“模块化”组件,这种组件定义自己的布局和行为.一旦我们成功定义了这样的可重用的Fragment,我们就可以将他们与Activity进行关联,然后与整个Application进行整体的UI组装. 我们经常需要一个Fragm

Fragment 与 Activity 通信

先说说背景知识: (From:http://blog.csdn.net/t12x3456/article/details/8119607) 尽管fragment的实现是独立于activity的,可以被用于多个activity,但是每个activity所包含的是同一个fragment的不同的实例.Fragment可以调用getActivity()方法很容易的得到它所在的activity的对象,然后就可以查找activity中的控件们(findViewById()).例如:ViewlistView

Fragment与Activity通信

在Fragment类中,有个方法 public void onAttach(Activity activity),在子Fragment中重写该方法,从该方法的参数中可以看出,该方法中的Activity是加载Fragment的Activity,所以可以通过该方法寻找Fragment的Activity; 在Activity类中,有个方法 public void onAttachFragment(Fragment fragment),api中是这么描述该方法的作用: /** * Called when

Android Fragment和Activity的交互介绍

Fragment和Activity的交互 一个Fragment的实例总是和包含它的Activity直接相关. fragment可以通过getActivity() 方法来获得Activity的实例,然后就可以调用一些例如findViewById()之类的方法. 如: View listView = getActivity().findViewById(R.id.list); 但是注意调用getActivity()时,fragment必须和activity关联(attached to an acti

fragment 与activity通信

1.fragment简单套用(静态调用): 新建一个fragment,其xml文件如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00ff0

Fragment和Activity通信不过如此

// 在创建fragment的时候将值传递给fragment MyFragmentOne one = new MyFragmentOne(); Bundle bundle = new Bundle(); bundle.putInt("id", 1001); one.setArguments(bundle); manager.beginTransaction().add(R.id.content, one).commit(); // 宿主activity获取到fragment中控件的值