Android学习-Fragment初视
今天有学习了一个安卓中重要的内容,Fragment
Fragment 可以做到把屏幕划分成几块,然后进行分组,进行模块化的管理。并且可以更加方便的在运行过程中动态地更新Activity的用户界面
Fragment并不能单独使用,他需要嵌套在Activity 中使用,尽管他拥有自己的生命周期,但是还是会受到宿主Activity的生命周期的影响,
比如Activity 被destory销毁了,Fragment也会跟着销毁。
展示一下我现在做出的效果,可以看到,在屏幕中央有一个“ I am AFragment ”,点击“更换”按钮,变成了“I am BFragment” !!
在实际应用中肯定会比这个复杂的多,但是这已经实现了其基本功能,基于这些我们可以做出更有用的效果!
代码实现
ContainerActivity
package com.example.testapplication.fragment; import android.os.Bundle; import android.view.View; import android.widget.Button; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import com.example.testapplication.R; public class ContainerActivity extends AppCompatActivity { private AFragment aFragment; private BFragment bFragment; private Button mBtnChange; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_container); mBtnChange = (Button) findViewById(R.id.btn_change); mBtnChange.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (bFragment == null){ bFragment = new BFragment(); } getSupportFragmentManager().beginTransaction().replace(R.id.fl_container,bFragment).commitAllowingStateLoss(); } }); //实例化 aFragment = new AFragment(); //把aFragment添加到Activity中 getSupportFragmentManager().beginTransaction().add(R.id.fl_container,aFragment).commitNowAllowingStateLoss(); } }
AFragment
package com.example.testapplication.fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import com.example.testapplication.R; public class AFragment extends Fragment { private TextView mTvTitle; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_a,container,false); return view; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mTvTitle= (TextView) view.findViewById(R.id.tv_title); } }
BFragment
package com.example.testapplication.fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import com.example.testapplication.R; public class BFragment extends Fragment { private TextView mTvTitle; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_b,container,false); return view; } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mTvTitle= (TextView) view.findViewById(R.id.tv_title2); } }
MainActivity
package com.example.testapplication; import androidx.appcompat.app.AppCompatActivity; import android.annotation.SuppressLint; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import com.example.testapplication.fragment.ContainerActivity; import com.example.testapplication.listview.ListViewActivity; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private Button btn_listview,btn_fragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_listview = (Button) findViewById(R.id.btn_listview); btn_listview.setOnClickListener(this); btn_fragment = (Button) findViewById(R.id.btn_fragment); btn_fragment.setOnClickListener(this); } @Override public void onClick(View view) { Intent intent = null; switch (view.getId()){ case R.id.btn_fragment: intent = new Intent(this, ContainerActivity.class); startActivity(intent); break; case R.id.btn_listview: intent = new Intent(this, ListViewActivity.class); startActivity(intent); } } }
作者:冰稀饭Aurora
出处:https://www.cnblogs.com/rsy-bxf150/p/17181200.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
分类:
Android学习
, 我的学习笔记-日常学习总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理