小编Arm*_*ian的帖子

BottomNavigationView - 如何避免重新创建片段并重用它们

我想在我的项目中制作一个底部导航栏.每个视图都有自己的片段.问题是,每次我点击按钮更改视图,例如从最近更改为收藏夹,它会创建具有全新状态的新片段(例如滚动位置,文本更改我的片段包含的任何内容).我知道在官方Android文档中有人写道,底部导航栏应该重置任务状态,但我认为这对用户来说太不舒服了.我希望有一些像instagram这样的功能,你可以从feed更改为探索,然后返回到滚动位置,图像缓存一切都保存.我几乎尝试了解决这个问题的方法,唯一有效的方法就是根据情况设置可视性GONE和设置可见性VISIBLE但我明白这不是正确的方式应该有更好的方法这样做我不是在谈论手动保存所需的实例.我几乎每个关于底部导航片段的教程都会遵循,但有趣的是,没有人有兴趣在没有每次调用new的情况下使用它.

在此输入图像描述

在此输入图像描述

FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frameLayout, FirstFragment.newInstance());
fragmentTransaction.commit();

bottomNavigationView = (BottomNavigationView) findViewById(R.id.navigation);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        Fragment fragment = null;
        switch (item.getItemId()) {
            case R.id.menu_dialer:
                fragment = FirstFragment.newInstance();
                break;
            case R.id.menu_email:
                fragment = SecondFragment.newInstance();
                break;
            case R.id.menu_map:
                fragment = ThirdFragment.newInstance();
                break;
        }
        if (fragment != null) {
            FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.frameLayout, fragment);
            fragmentTransaction.commit();
        }
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

我也试过onAttach和Deattach解决方案,但再次没有成功.

视频链接:新的我试过Nino Handler版本它只在我点击相同的片段按钮时才有效

也许它是连接我使用金丝雀版本或我的gradle依赖项中的错误? 在此输入图像描述

最新消息:

最新消息:

public class MainActivity extends AppCompatActivity {

    private TextView mTextMessage;


    private …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments bottomnavigationview

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

Fresco 中已弃用 setImageURI(url)。用什么代替?

我正在使用 Fresco Android Library 从 URL 获取图像。我得到的图像没有任何问题,但问题是它setImageURI(url)已被弃用。在此输入图像描述 所以我找不到可以用什么来代替。避免在我的代码中使用已弃用的函数。

android image deprecated kotlin fresco

5
推荐指数
2
解决办法
4523
查看次数

以编程方式设置 Android 设备的锁屏壁纸

有许多壁纸应用程序,您可以在其中更改与主壁纸分开的锁屏壁纸。如果我没有弄错的API 24话,可以做这样的事情,但我发现很少有与此相关的文章,而且它们太旧了。

android set wallpaper kotlin

1
推荐指数
1
解决办法
5057
查看次数

使用 PropertyChangeSupport 获取变量更改通知(例如 observable、delegate)

我有这种问题,我想听听变量的变化。让我们来看看我已经var foo:Int = 10初始化并在代码中的某个地方将它的值更改为其他东西让我们foo = 99这里是我在 kotlin 中的代码片段。

var foo:Int=10

private val changeSupport: PropertyChangeSupport? = PropertyChangeSupport(foo)

val observer = {
                    property: KProperty<*>,
                    oldValue: Int?,
                    newValue: Int? -> changeSupport!!.firePropertyChange(property.name, oldValue, newValue)
                }

 var oof: Int? by Delegates.observable(foo, observer)
 changeSupport!!.addPropertyChangeListener { event ->
                    Log.d("loggg","Property [${event.propertyName}] changed " + "from [${event.oldValue}] to [${event.newValue}]")
                }
Run Code Online (Sandbox Code Playgroud)

因此,在我编写的代码中的某处时,foo = 99我必须接收日志。我按照这篇文章尝试了很多东西,但没有成功。我错过了什么吗?

如何为变量创建更改侦听器?

http://kotlination.com/kotlin/kotlin-observable-property-delegated-property https://www.javalobby.org/java/forums/t19476.html

variables delegates observable kotlin

0
推荐指数
1
解决办法
3558
查看次数