`

fragment简单实用及数据传递(1)

阅读更多
Fragment的使用相关

使用Fragment时,需要继承Fragment或者Fragment的子类,


直接贴代码,展示一个例子:

LeftFragment.java:
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class LeftFragment extends Fragment implements OnItemClickListener
{

	private String[] data = new String[]
	{ "灵魂战车2", "变形金刚3:月黑之时", "敢死队2" };
	private ListView listView;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState)
	{
		View view = inflater.inflate(R.layout.left_fragment, null);
		listView = (ListView) view.findViewById(R.id.listview_movie_list);
		listView.setOnItemClickListener(this);
		ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
				getActivity(), android.R.layout.simple_list_item_activated_1,
				data);
		listView.setAdapter(arrayAdapter);
		listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

		return view;
	}


	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position,
			long id)
	{
		TextView textView = (TextView) getActivity().findViewById(
				R.id.textview_detail);
		String detail = "nihao";
		if (textView == null)
		{
			Intent intent = new Intent(getActivity(), DetailActivity.class);
			intent.putExtra("detail", detail);
			startActivity(intent);
		}
		else
		{
			textView.setText(detail);
		}
	}

}

left_fragment.xml
平板:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/titles"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="4"
        class="cn.eoe.first.fragment.LeftFragment" />
    <fragment
        android:id="@+id/details"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        class="cn.eoe.first.fragment.RightFragment" />
</LinearLayout>  

手机
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" android:background="#FFF">

    <ListView
        android:id="@+id/listview_movie_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>  

RightFragment.java
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class RightFragment extends Fragment
{
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState)
	{
		View view = inflater.inflate(R.layout.right_fragment, null);
		return view;
	}

}

right_fragment.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textview_detail"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
       />

</LinearLayout>  

主程序:
import android.app.Activity;
import android.os.Bundle;

public class FirstFragmentActivity extends Activity
{

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_first_fragment);
	}

}

activity_first_fragment.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/titles"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="4"
        class="cn.eoe.first.fragment.LeftFragment" />
    <fragment
        android:id="@+id/details"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        class="cn.eoe.first.fragment.RightFragment" />
</LinearLayout>  

DetailActivity.java

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

public class DetailActivity extends Activity
{      
     
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_detail);
		TextView detail = (TextView)findViewById(R.id.textview_detail);
		detail.setText(getIntent().getExtras().getString("detail"));

	}   

}


activity_detail.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/details"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="cn.eoe.first.fragment.RightFragment" />

</RelativeLayout>



fragment之间的数据交互

发送:
public void onClick_SendData(View view)
	{
		MyFragment fragment = new MyFragment();
		Bundle bundle = new Bundle();
		String textdd = text.getText().toString();
		bundle.putString("name", textdd);
		fragment.setArguments(bundle);
		FragmentManager fragmentManager = getFragmentManager();
		FragmentTransaction fragmentTransaction = fragmentManager
				.beginTransaction();
		fragmentTransaction.add(R.id.fragment_container1, fragment, "fragment");
		fragmentTransaction.commit();
		Toast.makeText(this, "数据已成功传递.", Toast.LENGTH_LONG).show();
	}


接受
String name = getFragmentManager().findFragmentByTag("fragment")
				.getArguments().getString("name");
分享到:
评论

相关推荐

    viewpager+fragment+fragment间通讯

    `Activity`与`Fragment`之间的通信以及`Fragment`之间的数据传递则是保证应用正常运行的关键。 首先,我们来讨论如何使用`ViewPager`和`Fragment`来创建滑动导航栏。`ViewPager`通常配合`PagerAdapter`的子类(如`...

    fragment实用Demo

    在这个"fragment实用Demo"中,我们很可能会看到如何在实际应用中有效地利用Fragment。 Fragment的生命周期与Activity类似,包括onAttach(), onCreate(), onCreateView(), onViewCreated(), onActivityCreated(), ...

    fragment与Activity通过接口进行数据传输

    在Android开发中,Fragment和Activity之间的通信是一种常见的需求。Fragment可以视为Activity的一...这种方式不仅适用于简单的数据传递,也可以扩展到更复杂的事件监听和回调场景,是Android开发中一个非常实用的技术。

    Android软件架构之RadioGroup + Fragment , TabLayout + ViewPager +Fragment

    3. 数据传递和通信:在Fragment之间或Fragment与Activity之间传递数据,可以通过Bundle、接口回调、EventBus等方式实现。 4. 页面适配和性能优化:考虑到不同设备的屏幕尺寸和性能差异,需要适配各种屏幕,并通过...

    Fragment之间的通信之万能接口

    例如,我们可以创建一个名为`OnDataInteractionListener`的接口,其中有一个`onDataReceived`方法,用于接收Fragment传递的数据: ```java public interface OnDataInteractionListener { void onDataReceived...

    两个Fragment分别在各自的Activity上的交互

    当涉及到两个Fragment在不同的Activity之间交互时,通常需要传递数据或触发特定操作。在这个场景下,`startActivityForResult()`方法是实现这种交互的一个常见手段,尽管它传统上是与Activity之间的交互关联的,但...

    RadioGroup+fragment

    7. **事件传递**:如果`Fragment`需要与`RadioGroup`进行交互,可以使用`setTargetFragment()`和`getTargetFragment()`方法传递数据,或者通过接口回调的方式。 综上所述,`RadioGroup`结合`Fragment`是一种高效且...

    Android应用源码之Fragment实现tab实例 代码.rar

    5. **数据传递** 在Fragment和Activity之间传递数据,可以通过Intent(如果Fragment是通过Intent启动的Activity的一部分),或者使用setArguments(Bundle)和getArguments()方法。此外,还可以通过接口回调或...

    Android动态加载fragment

    其中,使用Interface是最基础的方式,定义一个接口并在两个Fragment之间共享,一个Fragment作为回调实现接口,另一个Fragment通过接口传递数据。 6. **Fragment嵌套** 一个Fragment内还可以包含其他Fragment,这...

    Otto_AsyncTask_Fragment_Demo1

    在`Otto_AsyncTask_Fragment_Demo1`中,Otto用于发布和订阅异步任务的结果,使得各个组件能够实时响应数据变化。 2. **AsyncTask**:Android提供的一个用于执行后台任务的工具类,它可以轻松地在UI线程和后台线程...

    Android app-简易记事本

    6. **Intent与数据传递** Intent是Android中实现组件间通信的关键。在这个记事本应用中,可能会使用Intent来启动新的Activity,比如从列表点击跳转到详情页,或者从编辑页面返回列表。Intent还能用来传递数据,如...

    Android中你可能不知道的Fragment妙用

    这种方法特别适合在Adapter、Dialog等组件中获取登录回调,避免了数据的传递和复杂的事件通信。 总的来说,Fragment在Android开发中不仅用于创建可复用的视图模块,还可以作为通信的桥梁,简化跨组件交互的逻辑。...

    ExpandableListview 的动态树形数据的生成

    在Android开发中,ExpandableListView 是一个非常实用的控件,它可以展示树形结构的数据,通常用于呈现层次化的信息,比如目录结构、菜单等。在实际应用中,我们经常需要动态地生成数据并加载到ExpandableListView中...

    Jquery Ajax 前后台数据传输

    这里,我们传递一个对象作为第二个参数,表示POST数据,`'json'`是预期的服务器响应类型。 3. **使用`.load()`和`.html()`** 对于只需要更新HTML内容的情况,`.load()`和`.html()`方法非常实用。例如,加载服务器...

    Android应用框架原理与程序设计(实用1).zip

    《Android应用框架原理与程序设计》是一本深入探讨Android应用程序开发的实用教程。该压缩包包含了一系列相关的源码,适用于毕业设计和课程设计项目,旨在帮助开发者理解Android应用的内部工作机制,提升编程技能。 ...

    android bundle message

    通过这个“bundle_message”的源码,我们可以深入理解如何有效地使用Bundle进行数据传递,以及在实际开发中可能遇到的问题和解决策略。源码可能涵盖了异常处理、空值检查、数据验证等多个方面,这些都是Android开发...

    10个实用Android应用程序源码

    源码中可能会展示如何创建和管理多个Activity,以及如何通过Intent传递数据。 2. **布局设计**:XML文件用于定义Android应用的用户界面。源码可能包括LinearLayout、RelativeLayout、ConstraintLayout等布局的使用...

    MobileSale(实用1).zip

    MobileSale(实用1).zip 是一个包含Java源码的压缩包,主要针对的是移动销售管理系统的实现,适合于毕业设计或课程设计项目。这个项目可能涵盖了Android应用开发的基础知识,以及一些进阶的编程概念和技术,如数据...

Global site tag (gtag.js) - Google Analytics