您的位置:首页 > 移动开发 > Android开发

Android-Activity与Fragment之间传递数据

2015-08-29 10:35 495 查看
结果图:



布局代码:
activity_main.xml

<span style="font-family:KaiTi_GB2312;font-size:18px;"><LinearLayout 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:orientation="horizontal"
tools:context=".MainActivity">

<FrameLayout
android:id="@+id/fl"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
</FrameLayout>

<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:orientation="vertical">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Activity"
android:textSize="30sp" />

<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp" />

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

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click1"
android:text="提交到fragme" />

</LinearLayout>

</LinearLayout>
</span>


fragment01.xml

<span style="font-family:KaiTi_GB2312;font-size:18px;"><?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:background="#a3f4a5"
android:gravity="center"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragment"
android:textSize="50sp" />
<TextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:textSize="30sp"
android:layout_height="wrap_content" />

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

<Button
android:id="@+id/bt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="提交到Activity" />

</LinearLayout>
</span>


Fragment01.java

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.example.yu_longji.android16;

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

public class Fragment01 extends Fragment {
private EditText editText01;
private TextView text01;
private Button button01;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//返回的view对象会作为fragment01的内容显示在屏幕上
View v = inflater.inflate(R.layout.fragment01, null);
text01 = (TextView)v.findViewById(R.id.text1);
editText01 = (EditText)v.findViewById(R.id.ed);
button01 = (Button)v.findViewById(R.id.bt);
//button监听
button01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = editText01.getText().toString();
//把数据传递给activity
((MainActivity)getActivity()).setText(text);
}
});
return v;
}
//将数据显示到TextView
public void setText(String text){
text01.setText(text);
}
}
</span>


MainActivity.java

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.example.yu_longji.android16;

import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

/**
* import android.support.v4.app.Fragment;
* 使用支持包中的Fragment 最多支持到6 但是 MainActivity 要继承 FragmentActivity
* 获取fragment管理器需要使用getSupportFragmentManager();
*/

public class MainActivity extends Activity {

private EditText et;
private TextView tv;
private Fragment01 fg1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText)findViewById(R.id.ed);
tv = (TextView)findViewById(R.id.tv);
//创建fragment对象
fg1 = new Fragment01();
//获取fragment管理器
FragmentManager fm = getFragmentManager();
//打开事务
FragmentTransaction ft = fm.beginTransaction();
//把内容显示至帧布局
ft.replace(R.id.fl, fg1);
//提交
ft.commit();
}

//提交文本在fragment01中
public void click1(View view){
String text = et.getText().toString();
fg1.setText(text);
}
//向EditText显示文本
public void setText(String text){
tv.setText(text);
}
}
</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息