Fragment向Activity传递数据
继续学习fragment,显然我们的系统还需要做到Fragment向Activity传递数据。
看一下演示效果
我们在activity中写一个方法,用于设置activity中的textview
然后再在fragment中写一个按钮,点击事件设置成用getActivity调用刚才的方法,然后设置内容。
((DynamicFragmentActivity)getActivity()).setTvReceive("这是fragment向activity传递数据");
代码实现:
activity
package com.example.dataapplication.fragment; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.example.dataapplication.DynamicFragmentActivity; import com.example.dataapplication.R; public class BlankFragment2 extends Fragment { private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; private String mParam1,mParam2; private String data; private int int_data; private TextView mTextView; private EditText mEditText; private Button mBtn1; public BlankFragment2(String data) { mParam1 = data; } public BlankFragment2() { } public void setArgParam1(String data){ this.mParam1 = data; if (!TextUtils.isEmpty(mParam1)){ mTextView.setText(mParam1); } } public static BlankFragment2 newInstance(String param1, String param2) { BlankFragment2 fragment = new BlankFragment2(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); args.putString(ARG_PARAM2, param2); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); data = getArguments().getString("data"); int_data = getArguments().getInt("int_data"); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_blank2, container, false); } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mEditText = view.findViewById(R.id.frag_edit_1); mTextView = view.findViewById(R.id.frag_tv_1); mBtn1 = view.findViewById(R.id.frag_btn_1); mBtn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ((DynamicFragmentActivity)getActivity()).setTvReceive("这是fragment向activity传递数据"); } }); if (!TextUtils.isEmpty(mParam1)){ mTextView.setText(mParam1); } if (!TextUtils.isEmpty(data)){ mTextView.setText(data+int_data); } } }
fragment
package com.example.dataapplication; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import android.os.Bundle; import android.view.View; import android.widget.TextView; import com.example.dataapplication.fragment.BlankFragment1; import com.example.dataapplication.fragment.BlankFragment2; public class DynamicFragmentActivity extends AppCompatActivity { private TextView tvReceive; private String mData; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dynamic_fragment); tvReceive = findViewById(R.id.frag_dy_tv_1); getSupportFragmentManager() .beginTransaction() .replace(R.id.frag_dy_1,BlankFragment2.class, null) .commit(); } public void setTvReceive(String data){ mData = data; tvReceive.setText(mData); } }
作者:冰稀饭Aurora
出处:https://www.cnblogs.com/rsy-bxf150/p/17254865.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
分类:
Android学习
, 我的学习笔记-日常学习总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术