首页 > 移动平台 > 详细

Android 学习之Activity与Fragment之间的信息传递

时间:2015-10-09 14:01:03      阅读:295      评论:0      收藏:0      [点我收藏+]

需求场景:在fragment中输入数据,通过activity,将数据加载到另外一个fragment中显示出来

流程梳理:

在输入数据的fragment类中定义一个接口,接口参数为所需传递的数据-->activity需实现该接口并在接口方法中处理传递过来的数据--->fragment通过在onAttach方法或者activity对象的引用,进而在获得数据后通过activity对象的应用调用该接口方法

废话补多少,直接上代码


public class NewItemFragment extends Fragment {


  private OnNewItemAddedListener onNewItemAddedListener;

  

  public interface OnNewItemAddedListener {

    public void onNewItemAdded(String newItem);

  }

  

  @Override

  public View onCreateView(LayoutInflater inflater, ViewGroup container,

    Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.new_item_fragment, container, false);

    final EditText myEditText = 

      (EditText)view.findViewById(R.id.myEditText);

myEditText.setOnKeyListener(new View.OnKeyListener() {

      public boolean onKey(View v, int keyCode, KeyEvent event) { 

        if (event.getAction() == KeyEvent.ACTION_DOWN)

          if ((keyCode == KeyEvent.KEYCODE_DPAD_CENTER) ||

              (keyCode == KeyEvent.KEYCODE_ENTER)) {

            String newItem = myEditText.getText().toString();

            onNewItemAddedListener.onNewItemAdded(newItem);

            myEditText.setText("");

            return true;

          }

        return false;

      }

    });

    return view;

  }

  @Override

  public void onAttach(Activity activity) {

    super.onAttach(activity);

//activity为管理fragment的容器,在这里可获得一个父容器的实例对象, 

    try {

      onNewItemAddedListener = (OnNewItemAddedListener)activity;

    } catch (ClassCastException e) {

      throw new ClassCastException(activity.toString() + 

                " must implement OnNewItemAddedListener");

    }

  }

}



package com.paad.todolist;


import java.util.ArrayList;


import android.app.Activity;

import android.app.FragmentManager;

import android.os.Bundle;

import android.widget.ArrayAdapter;


public class ToDoListActivity extends Activity implements NewItemFragment.OnNewItemAddedListener {

  

  private ArrayAdapter<String> aa;

  private ArrayList<String> todoItems;


  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);


    // Inflate your view

    setContentView(R.layout.main);

      

    // Get references to the Fragments

    FragmentManager fm = getFragmentManager();

    ToDoListFragment todoListFragment = 

      (ToDoListFragment)fm.findFragmentById(R.id.TodoListFragment);


    // Create the array list of to do items

    todoItems = new ArrayList<String>();

     

    // Create the array adapter to bind the array to the listview

    aa = new ArrayAdapter<String>(this,

                                  android.R.layout.simple_list_item_1,

                                  todoItems);

     

    // Bind the array adapter to the listview.

    todoListFragment.setListAdapter(aa);

  }

  

  public void onNewItemAdded(String newItem) {

    todoItems.add(newItem);

    aa.notifyDataSetChanged();

  }


}


Android 学习之Activity与Fragment之间的信息传递

原文:http://my.oschina.net/zaizaiangels/blog/514712

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!