首页 > 学院 > 开发设计 > 正文

Fragment与Acvitity的对向传值问题

2019-11-08 00:38:56
字体:
来源:转载
供稿:网友
一、由Acvitity向Fragment传值思路步骤:1、在Acvitity的java代码中实例化对应acvitity布局文件中的控件 在Acvitity的xml布局文件中添加fragment布局和控件2、新建Fragment实例,在布局文件中给需要接收传值的控件添加id3、在Fragment的Java代码中实例化自身布局文件中的ID,并且给接收传值的控件添加一个接收数据的方法 public void intiturn(String meg){ btn.setText(meg); }4、在Acvitity中给传值或者设置的按钮添加传值的点击事件,在点击事件的匿名内部类中先获得需要传递的值的内容,然后拿到Fragment的传递对向的实例 BlankFragment fg= (BlankFragment) getSupportFragmentManager().findFragmentById(R.id.fg);5、用拿到的对象fg调用该对象的接收数据的方法fg.intiturn(meg);**********************************************************************Acvitity中Java代码: public class MainActivity extends AppCompatActivity { PRivate EditText et_content; private Button btn_turn; private String meg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_content= (EditText) findViewById(R.id.et_content); btn_turn= (Button) findViewById(R.id.btn_turn); btn_turn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { meg=et_content.getText().toString();//点击按钮的时候先取得输入的文本内容, //拿到fragment的实例 传值 BlankFragment fg= (BlankFragment) getSupportFragmentManager().findFragmentById(R.id.fg); fg.intiturn(meg);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&acvitity.xml代码: <EditText android:id="@+id/et_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="请输入内容" android:textSize="30sp"/> <Button android:id="@+id/btn_turn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="传递" android:textSize="25sp"/> <fragment android:id="@+id/fg" android:name="com.example.administrator.fragmentapplication.BlankFragment" android:layout_width="match_parent" android:layout_height="match_parent" tools:layout="@layout/fragment_blank"> </fragment>&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Fragment中Java代码:public class BlankFragment extends Fragment { private Button btn; public void intiturn(String meg){ btn.setText(meg); } 二、由Fragment向Acvitity传值:思路步骤:1、在acvitity.xml文件中定义接收值的控件并为其添加id和fragment布局样式,并且给fragment布局添加id或者tag2、在Acvitity的Java代码中实例化接收值的控件并为控件添加接收数据的方法 public void setText(String msg){ tv.setText(msg);3、在fragment.xml中添加可以传值的控件,和设置传值的控件,并为他们添加id4、在Fragment的Java代码中实例化Acvitity的对象,实例化xml布局文件中的控件,给设置按钮添加传值的点击事件activity= (Fg2Activity) getActivity();//获得对象,调用方法 String content=et_content.getText().toString(); activity.setText(content);acvitity.xml: <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="通讯内容" android:textSize="25sp" /> <fragment android:id="@+id/fg" android:name="com.example.administrator.fragmentapplication.DataFragment" android:layout_width="match_parent" android:layout_height="match_parent"/>Acvitity.Javapublic class Fg2Activity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fg2); tv= (TextView) findViewById(R.id.tv); } public void setText(String msg){ tv.setText(msg);fragment.xml <EditText android:id="@+id/et_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="输入内容" /> <Button android:id="@+id/btn_set" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="设置" />Fragment.java public class Fg2Activity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fg2); tv= (TextView) findViewById(R.id.tv); } public void setText(String msg){ tv.setText(msg);
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表