展会信息港展会大全

Android开发之Fragment与Activity的数据交互通过回调机制实现(源代码分享)
来源:互联网   发布日期:2016-01-14 10:26:18   浏览:1266次  

导读: 上一篇文章简单介绍了Android的回调机制的使用,这一篇博文将重点介绍Fragment碎片与activity的数据交互,fragment在Android开发中起着至关重要的作用,通过官方...

上一篇文章简单介绍了Android的回调机制的使用,这一篇博文将重点介绍Fragment碎片与activity的数据交互,fragment在Android开发中起着至关重要的作用,通过官方Android api我们可以看到,fragment有着自己的生命周期并依赖于它绑定的activity的生命周期而存在,那样activity与fragment怎样进行数据交互呢,请看此篇博文。

MainActiivity的代码

package com.example.f08_fragment03;

import com.example.f08_fragment03.Fragment02.Callback;

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.widget.Button;

import android.widget.EditText;

public class MainActivity extends Activity {

private FragmentManager manager;// 创建fragment管理

private FragmentTransaction transaction;// 创建fragment的事物

private EditText editText;

private Button button;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

editText = (EditText) this.findViewById(R.id.editText2);

button = (Button) this.findViewById(R.id.button1);

manager = getFragmentManager();

transaction = manager.beginTransaction();

final Fragment02 fragment02 = new Fragment02();

transaction.add(R.id.left, fragment02, "left");

transaction.commit();

// 不管要实现怎样的功能都必须调用以下三个方法

// manager=getFragmentManager();

//transaction=manager.beginTransaction();

// transaction.commit();提交数据

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

//通过callback机制得到fragment的数据

fragment02.getString(new Callback() {

@Override

public void getString(String msg) {

// TODO Auto-generated method stub

editText.setText(msg);

}

});

}

});

}

@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;

}

}

Fragment02的代码

package com.example.f08_fragment03;

import android.app.Activity;

import android.app.Fragment;

import android.os.Bundle;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.Button;

import android.widget.EditText;

public class Fragment02 extends Fragment {

private Button button;

private EditText editText;

@Override

public void onAttach(Activity activity) {

// TODO Auto-generated method stub

super.onAttach(activity);

}

@Override

public void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

}

// 在该方法中更新UI

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

// TODO Auto-generated method stub

View view = inflater.inflate(R.layout.left, null);

button = (Button) view.findViewById(R.id.button1);

editText = (EditText) view.findViewById(R.id.editText1);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View arg0) {

//通过getActivity方法得到activity的控件,以此可以得到数据

EditText eText = (EditText) getActivity().findViewById(

R.id.editText2);

Log.i("info", "------->" + eText.getText().toString());

editText.setText(eText.getText().toString());

}

});

return view;

}

@Override

public void onStart() {

// TODO Auto-generated method stub

super.onStart();

}

@Override

public void onResume() {

// TODO Auto-generated method stub

super.onResume();

}

@Override

public void onPause() {

// TODO Auto-generated method stub

super.onPause();

}

//实现数据传递

public void getString(Callback callback) {

String msg = editText.getText().toString();

callback.getString(msg);

}

//创建接口

public interface Callback {

public void getString(String msg);

}

}

main的xml

fragment的xml

这样就大功告成了,点击fragment的button就可以在其editText控件显示activity的editText控件的文字,点击activity的button就可以得到fragment的编辑控件的数据!

赞助本站

人工智能实验室

相关热词: android开发

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港