相关疑难解决方法(0)

onActivityCreated 已弃用,如何正确使用 LifecycleObserver?

Google 在 Android 上弃用 fragment 的 onActivityCreated() 并推荐使用 LifeCycleObserver:

 To get a callback specifically when a Fragment activity's
     * {@link Activity#onCreate(Bundle)} is called, register a
     * {@link androidx.lifecycle.LifecycleObserver} on the Activity's
     * {@link Lifecycle} in {@link #onAttach(Context)}, removing it when it receives the
     * {@link Lifecycle.State#CREATED} callback.
Run Code Online (Sandbox Code Playgroud)

所以我尝试以推荐的方式制作它,但我只能在 Logcat 中观察到的状态只是State: INITIALIZED

 private lateinit var lifecycleObserver: LifecycleObserver

 override fun onAttach(context: Context) {
    super.onAttach(context)

    hostActivity = context as HostActivity

    lifecycleObserver = object : LifecycleObserver {

        @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
        fun onCreate() {
            Logger.tag("SOME-TAG")d("State: …
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle android-fragments android-activity

34
推荐指数
4
解决办法
2万
查看次数

Android片段中的自定义属性

我想在Android片段中使用XML定义自定义属性(不使用捆绑其他参数),就像declare-styleable在自定义控件中一样.但是没有带有AttrSet参数的构造函数,所以它可能吗?我可以覆盖public void onInflate(android.app.Activity activity, android.util.AttributeSet attrs, android.os.Bundle savedInstanceState)以获得属性支持吗?

android custom-attributes fragment android-fragments

33
推荐指数
2
解决办法
1万
查看次数

从活动中设置片段的参数

我想将我的活动中的参数传递给嵌入到活动中的片段.片段静态嵌入xml布局中.我试着像这样调用setArgument():

setContentView(R.layout.detail_activity);
DetailFragment detailFragment = (DetailFragment) getFragmentManager().findFragmentById(R.id.detailFragment);
detailFragment.setArguments(getIntent().getExtras());
Run Code Online (Sandbox Code Playgroud)

但是已经太晚了,因为必须在片段创建后立即调用setArguments.唯一的是我看到getArguments()和更改捆绑.有更好的方法吗?

android android-fragments android-activity

24
推荐指数
2
解决办法
3万
查看次数

Android Fragment在布局中声明,如何设置参数?

我有一个片段在onCreateView中使用getArguments()方法来获取一些输入数据.

我在ViewPager中使用这个片段,它工作正常.

当我尝试在不同的活动中重用此片段时,问题就开始了,该活动仅显示此片段.我想将片段添加到activitie的布局中:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment"
    android:name="com.example.ScheduleDayFragment"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />
Run Code Online (Sandbox Code Playgroud)

问题是:如何将Bundle传递给布局中声明的片段?

android android-fragments

7
推荐指数
2
解决办法
4655
查看次数

了解Fragment.newInstance方法

我正在实现一个Android片段.我知道框架可以自动销毁并重新创建片段,并且重新创建片段会调用其默认构造函数,而不是具有参数的构造函数.有很多帖子(例如这个问题的接受答案)显示了如何通过实现静态newInstance方法为片段提供参数.

我不明白的是谁打电话newInstance.我的第一印象是 - 因为可以为这个newInstance方法定义任意参数- 我应该在应用程序的某个地方添加一个显式调用,并且名称newInstance只是一个命名约定.但是,除了框架调用默认构造函数创建的第二个片段之外,我将创建第二个片段,这让我很困惑.

那么上面的假设是不正确的,并且该newInstance方法实际上是Java用于实例化类的内置方法的重载?在那种情况下,我看不出如何定义一个newinstance采用任意参数列表的方法.或者这可能在Java中,我只是不太了解Java?

java android fragment

4
推荐指数
2
解决办法
1万
查看次数