关键词:
【中文标题】Fragment 可以像 MainActivity 那样工作吗?【英文标题】:Can Fragment act like MainActivity? 【发布时间】:2021-09-09 21:36:25 【问题描述】:项目1 我创建了一个应用程序,它扫描附近启用 wifidirect 的设备,其 UI 很简单,只有一个布局(activitymain.xml),代码在 MainActivity.java 和 WifiDirectBroadcastReceiver 中。 (代码可以在这里找到:Can't find nearby WiFi- Direct devices showing "No Device Found!")
项目2 现在,我想使用包含 2 个选项卡的 Tablayout(不是默认自定义),所以我必须使用 2 个片段。 我应该将 MainActivity(project1) 中的代码放在哪里? 我应该复制到 fragment1 还是 MainActivity(Project2)
【问题讨论】:
【参考方案1】:您必须将 MainActivity (project1) 的代码复制到选项卡式布局的片段中。然后像下面这样配置 SectionPagerAdapter。
您还必须更改 MainActivity 的一些代码,以使其适合片段。
private val TAB_TITLES = arrayOf(
R.string.tab_text_1,
R.string.tab_text_2
)
/**
* A [FragmentPagerAdapter] that returns a fragment corresponding to
* one of the sections/tabs/pages.
*/
class SectionsPagerAdapter(private val context: Context, fm: FragmentManager)
: FragmentPagerAdapter(fm)
override fun getItem(position: Int): Fragment
var fragment: Fragment? = null
when (position)
0 -> fragment = Fragment1("f1","f1")
1 -> fragment = Fragment2("f2","f2")
return fragment!!
override fun getPageTitle(position: Int): CharSequence?
return context.resources.getString(TAB_TITLES[position])
override fun getCount(): Int
// Show 2 total pages.
return 2
你可以像这样创建片段:
private const val ARG_PARAM1 = "param1"
private const val ARG_PARAM2 = "param2"
class Fragment1 : Fragment()
private var param1: String? = null
private var param2: String? = null
private var _binding: Fragment1Binding? = null
private val binding get() = _binding!!
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
arguments?.let
param1 = it.getString(ARG_PARAM1)
param2 = it.getString(ARG_PARAM2)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View
_binding = FragmentHomeBinding.inflate(inflater, container, false)
val view = binding.root
return view
override fun onDestroyView()
super.onDestroyView()
_binding = null
override fun onPause()
super.onPause()
override fun onResume()
super.onResume()
companion object
@JvmStatic
fun newInstance(param1: String, param2: String) =
HomeFragment().apply
arguments = Bundle().apply
putString(ARG_PARAM1, param1)
putString(ARG_PARAM2, param2)
您可以像这样制作 Fragment2 并将其附加到您的选项卡式布局中。
【讨论】:
这个答案对你有用吗?如果是,请接受。否则告诉我你的问题。 但是 MainActivity(Project1) 中的 onPause() 和 onResume() 方法中有一些代码,如何将它们复制到片段? (据我所知片段有不同的生命周期) fragments 里面也有 onPause 和 onResume 方法。这样您就可以将该代码复制给他们。 我已经更新了关于如何创建片段的答案。你可以把它作为你的参考。如果满意,请采纳答案。 :)如何从 Mainactivity 编辑 Fragment 中的 TextView
】如何从Mainactivity编辑Fragment中的TextView【英文标题】:HowtoeditTextViewinFragmentfromMainactivity【发布时间】:2021-12-2414:13:35【问题描述】:我搜索了很多文档,并在下面编写了完整的代码,但是每次我运行它时,它都说viewisnull?请帮... 查看详情
如何在 MainActivity 和 Fragment 中正确获取 WifiManager 的实例
】如何在MainActivity和Fragment中正确获取WifiManager的实例【英文标题】:HowtoproperlygetaninstanceofWifiManagerinMainActivityandFragment【发布时间】:2016-03-3004:35:44【问题描述】:根据WifiManager你的Android文档:通过调用Context.getSystemService(Context.W... 查看详情
Android:MainActivity/Fragment 中的 ListView / GridView 重叠工具栏
】Android:MainActivity/Fragment中的ListView/GridView重叠工具栏【英文标题】:Android:ListView/GridViewOverlappingToolbarinMainActivity/Fragment【发布时间】:2017-12-1808:12:15【问题描述】:所以我最近一直在关注this教程,以便在我的主页中创建一个Li... 查看详情
android中activity和fragment生命周期的具体变化详解
前言:一个MainActivity中装载了两个Fragment,在MainActivity中的onCreate()方法中进行了Fragment的添加,显示与隐藏,默认显示的是FacilityFragment,点击导航可以切换到InformationFragment。下面我们来看看Fragment生命周期和MainActiv... 查看详情
如何从 Fragment 启动 Activity?
...的是空白布局,而不是与Activity关联的布局。我像这样从MainActivity.class调用Fragment:FragmentManagermFragmen 查看详情
Fragment 如何从使用 http 和异步任务获取数据的 MainActivity 类中获取数据?
】Fragment如何从使用http和异步任务获取数据的MainActivity类中获取数据?【英文标题】:HowFragmentcangetdatafromMainActivityclassthatgettingdatausinghttpandasycntask?【发布时间】:2020-02-0922:37:16【问题描述】:我正在使用AndroidStudio创建一个Android... 查看详情
如何从 MainActivity 中的 Fragment 访问适配器?我正在使用带有 viewpager 的标签,所以没有交易等方法
】如何从MainActivity中的Fragment访问适配器?我正在使用带有viewpager的标签,所以没有交易等方法【英文标题】:HowIcanaccessAdapterfromFragmentinMainActivity?Iamusingtabswithviewpagersonotransactionetcmethod【发布时间】:2019-10-2316:40:43【问题描述】... 查看详情
使用 Activity 的工具栏从 Fragment 向上导航
...布时间】:2018-03-2605:15:51【问题描述】:在我的应用中,MainActivity使用导航抽屉来托管多个片段。MainActivity提供了工具栏,fragment内容在FrameLayout的工具栏下方显示。在MainActivity中,我启动我的第一个片段 查看详情
Android Fragment 加载 API 数据
...我遇到的问题是我无法选择需要加载API数据的布局。我的MainActivity看起来像这样(我认为onCreate就足够了,但是复制了整个类):packagecom.exa 查看详情
Android Fragment,视图未删除
...述】:我开发了一个应用程序,其中我有一个片段交易,MainActivity包含FragmentView。MainActivity在屏幕顶部有三个Button,当我们将这个Activity转到另一个Fragment时,它们保持不变,只有MainActivityF 查看详情
如何在mainactivity中设置fragment的数据(代码片段)
...对象错误。我该如何修复代码?这是代码的一部分。这是MainActivityprivatevoidUIstart()Log.d(TAG,"UIstart:start");NavigatorUI=Navigator.HOME;ValDate=homeFrag.ValidDate();....这是HomeFragmentpublicclassHomeFragmentextendsFragmentpublicStringValid_Date_from;publicStringValid_Date... 查看详情
fragment
Fragment是轻量级的,比Activity快,适合同一个APP内页面的跳转。1:在MainActivity中启动一个fragment BlankFragment:publicclassMainActivityextendsAppCompatActivityimplementsBlankFragment.OnFragmentInteractionListener{@Overridepr 查看详情
使用fragment时如何获取控件id以及如何跳转
参考技术A一、使用Fragment获取控件Id我是在MainActivity中通过Fragment的事务管理把各个fragment添加到MainActivity中的,但是MainActivity中并没有很多控件,控件大都在各个fragment的布局里面,所以如何在fragmen中获取控件Id是一件非常重要... 查看详情
是否可以像 Vertex Shader 和 Fragment Shader 一样为 Android Camera Preview 提供效果,并使用 OpenGLES 保存捕获的图像?
】是否可以像VertexShader和FragmentShader一样为AndroidCameraPreview提供效果,并使用OpenGLES保存捕获的图像?【英文标题】:IsitPossibletogiveeffectlikeVertexShaderandFragmentShadertotheAndroidCameraPreview,andSavetheCapturedimagewithOpenGLES?【发布时间】:2011-12 查看详情
android:单activity多fragment,navigation实现fragment跳转,fragment之间通过viewmodel共享数据(代码片段)
单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据1、MainActivity2、HomeFragment,DetailFragment2.1、HomeFragment2.2、DetailFragment3、MyViewModel参考1、MainActivity1、activity_ma 查看详情
快速有效解决fragment中onactivityresult不回调的问题(代码片段)
应用场景:MainActivity嵌套了四个Fragment,信誓旦旦的在Fragment中打开一个功能页QrCodeActivity,在QrCodeActivity页面setResult(RESULT_OK,resultIntent);但是我的Fragment中的onActivityResult方法并没有执行到回调,网上有很多种方法... 查看详情
在 Fragment 内执行操作
...时间】:2015-04-0904:00:37【问题描述】:我有调用Fragment的MainActivity,片段调用类是:publicclassMainextendsFragment//publicMain()Buttonbtn;@OverridepublicViewonCreateView(LayoutInflater 查看详情
如何从 Main Activity 到 Fragment,并从同一个 Fragment 返回到 Main Activity?
】如何从MainActivity到Fragment,并从同一个Fragment返回到MainActivity?【英文标题】:HowtogofromMainActivitytofragment,andfromthesamefragmentbacktoMainActivity?【发布时间】:2021-03-2711:40:35【问题描述】:您好,我正在尝试制作一个应用程序,该应... 查看详情